SDLink - Interfaces com o utilizador para ferramentas baseadas em ...
Transcript of SDLink - Interfaces com o utilizador para ferramentas baseadas em ...
Instituto Superior de Engenharia de Lisboa
Licenciatura em Engenharia Informática e de Computadores
SDLink
Interfaces com o utilizador para ferramentas baseadas em tecnologias da
web semântica: uma aplicação às ciências da vida
Pedro Reis
Relatório de projecto realizado no âmbito de Projecto e Seminário do curso de
Licenciatura em Engenharia Informática e de Computadores sob orientação de
Ana Teresa Freitas (IST) e Cátia Vaz (ISEL).
Instituto Superior de Engenharia de Lisboa
Licenciatura em Engenharia Informática e de Computadores
SDLink
Interfaces com o utilizador para ferramentas baseadas em tecnologias da
web semântica: uma aplicação às ciências da vida
Relatório de projecto realizado no âmbito de Projecto e Seminário do curso de
Licenciatura em Engenharia Informática e de Computadores
Setembro de 2010
Autor:
______________________________________________________________________ Pedro Miguel Baptista dos Reis, nº 30758
Orientadores:
______________________________________________________________________ Ana Teresa Correia de Freitas – IST
______________________________________________________________________ Cátia Raquel Jesus Vaz – ISEL
i
Resumo
Este projecto visa o desenvolvimento de interfaces com o utilizador para sistemas de
informação semânticos. A aceitação deste projecto, pela comunidade científica nas áreas das
Ciências da Vida, é considerada prioritária nesta implementação. Sendo o Microsoft Excel, a
ferramenta de eleição destas comunidades, foi utilizada a Microsoft .NET Framework para
estender o Excel e permitir a sua integração como parte de um sistema de informação
semântico.
A solução implementada permite que o Excel continue a ser utilizado pelos cientistas garantindo
a integração dos dados num sistema de informação semântico. Isto permitirá a análise
transversal dos dados recolhidos e facilitará a consulta destes últimos por outras instituições.
Esta implementação é dinamicamente adaptável às ontologias criadas no sistema e recorre às
normas definidas pelo World Wide Web Consortium para a Web Semântica. Isto tem a
vantagem de permitir adaptar este projecto a qualquer repositório de triplos, com qualquer
nível de inferência associado, garantindo assim a independência de implementações concretas
no lado do servidor.
iii
Agradecimentos
Gostaria de agradecer:
À professora Cátia Vaz, pela oportunidade de participar neste projecto e pelo apoio,
esclarecimento e compreensão nas diversas dúvidas expostas.
À professora Ana Teresa Freitas, pela motivação, mesmo quando as tarefas pareciam
herculeanas. Pela confiança depositada e pelo pragmatismo na orientação do meu trabalho.
À Fundação para a Ciência e a Tecnologia e à Dr.ª Susana Vinga pelo apoio e financiamento
através projecto DynaMo - PTDC/EEA-ACR/69530/2006.
A todos os professores do ISEL, de quem tive a sorte de ser aluno, e que permitiram a
concretização do meu potencial.
v
À minha esposa, Carla, pelo apoio incondicional nesta viagem cuja constante tem sido a
aprendizagem.
vii
Conteúdos
1 Introdução .................................................................................................................... 1
1.1 Motivação .............................................................................................................. 2
1.2 Objectivos ............................................................................................................. 3
1.3 Estrutura do relatório ............................................................................................. 4
2 Conceitos ...................................................................................................................... 5
2.1 RDF ...................................................................................................................... 6
2.2 RDFS ..................................................................................................................... 9
2.3 OWL ................................................................................................................... 11
2.4 SPARQL ............................................................................................................... 13
3 Sistema de informação semântico ................................................................................. 17
3.1 Arquitectura ........................................................................................................ 17
3.1.1 Arquitectura do sistema .................................................................................... 17
3.1.2 Arquitectura da solução .................................................................................... 18
3.2 Implementação da solução ................................................................................... 20
3.2.1 Tipo de solução VSTO ....................................................................................... 20
3.2.2 Execução assíncrona......................................................................................... 21
3.2.3 Representação da ontologia em memória .......................................................... 23
3.2.4 Tecnologias...................................................................................................... 24
3.2.5 Camadas funcionais .......................................................................................... 25
3.2.6 Configuração da aplicação ................................................................................ 39
3.2.7 Modelo de instalação ........................................................................................ 40
4 Contribuições adicionais e avaliação .............................................................................. 41
4.1 Contribuições adicionais ....................................................................................... 41
4.1.1 Infra-estrutura de suporte ................................................................................ 41
4.1.2 Metodologias.................................................................................................... 42
4.2 Avaliação da solução ............................................................................................ 44
4.2.1 Vantagens da Web Semântica ........................................................................... 44
4.2.2 Vantagens da Implementação ........................................................................... 45
4.2.3 Limitações da Web Semântica ........................................................................... 46
viii
4.2.4 Limitações do Excel .......................................................................................... 51
5 Conclusões e trabalho futuro ........................................................................................ 55
5.1 Conclusões .......................................................................................................... 55
5.2 Desafios e dificuldades ......................................................................................... 56
5.3 Trabalho futuro .................................................................................................... 56
ix
Lista de Figuras
Figura 1 – Pilha de normalizações da Web Semântica ............................................................. 5
Figura 2 – Representação em grafo de triplos ......................................................................... 7
Figura 3 – Diagrama de classes UML com taxonomia de seres vivos ...................................... 10
Figura 4 – Diagrama parcial das extensões entre RDF e OWL ................................................ 13
Figura 5 – Arquitectura global do sistema ............................................................................. 17
Figura 6 – Arquitectura da solução ....................................................................................... 18
Figura 7 – Controlo MultiPick ............................................................................................... 19
Figura 8 – Ribbon implementado para a interface em Excel ................................................... 20
Figura 9 – Problemas na partilha de ficheiros Excel ............................................................... 21
Figura 10 – Fluxo de execução de tarefas aplicacionais ......................................................... 22
Figura 11 – Exemplo de extensão do formulário FrmAsyncBase ............................................. 23
Figura 12 – Diagrama de classes UML da representação em memória de ontologias ............... 23
Figura 13 – Workbench da framework Sesame ..................................................................... 24
Figura 14 – Quadro de operações da RESTFul API para endpoints SPARQL ............................ 25
Figura 15 - Quadro de operações da RESTFul API para endpoints de triplos ........................... 26
Figura 16 – Interface e respectiva implementação do analisador sintáctico ............................. 28
Figura 17 – Diagrama de sequência para a construção da ontologia em memória ................... 29
Figura 18 – Primitivas suportadas e excluídas da implementação ........................................... 30
Figura 19 – Diagrama da classe Mapping ............................................................................. 33
Figura 20 – Folha de cálculo principal de persistência ........................................................... 34
Figura 21 – Disposição de classes e suas propriedades ......................................................... 34
Figura 22 – Formulário de validação .................................................................................... 35
Figura 23 – Utilização de múltiplos livros no Excel ................................................................. 36
Figura 24 – Formulário do Excel para criação de regras de validação ..................................... 37
Figura 25 – Lista de validação para valores booleanos .......................................................... 37
Figura 26 – Resultado normal da directiva para descrição de recursos ................................... 38
Figura 27 – Excepção no triplestore por incoerência de tipos ................................................. 39
x
Figura 28 – Formulário de configuração ............................................................................... 40
Figura 29 – Infra-estrutura de suporte ao desenvolvimento e testes ...................................... 42
Figura 30 – Solução implementada na versão 2003 do Excel ................................................. 43
Figura 31 – Consulta de propriedades em SQL e SPARQL ...................................................... 47
Figura 32 – Propriedade transitiva em OWL .......................................................................... 47
Figura 33 – Visualização de ontologia em Protégé através do OWLViz .................................... 50
Figura 34 - Visualização de ontologia em Protégé através do OntoGraf .................................. 51
Figura 35 – Especificações principais do Excel por versão ...................................................... 51
Figura 36 – Expressão da quantidade máxima de referências por célula ................................. 52
xi
Lista de Listagens
Listagem 1 - Representação de triplos em RDF ....................................................................... 8
Listagem 2 - Exemplo de taxonomia de seres vivos ............................................................... 10
Listagem 3 - Exemplo de condição necessária ...................................................................... 12
Listagem 4 - Exemplo de condição necessária e suficiente ..................................................... 12
Listagem 5 - Exemplo de expressão SPARQL ........................................................................ 14
Listagem 6 - Utilização da cláusula union em SPARQL ........................................................... 15
Listagem 7 – Utilização de nós anónimos em SPARQL ........................................................... 16
Listagem 8 – Exemplo de resultados SPARQL em XML .......................................................... 27
Listagem 9 - Exemplo de incoerências de tipo em RDF .......................................................... 38
Listagem 10 – Ficheiro de configuração................................................................................ 39
Listagem 11 – Excerto da ontologia dos vinhos da W3C ........................................................ 48
Listagem 12 – Exemplo de propriedade sem range ............................................................... 48
Listagem 13 – Caso excepcional em condição necessária e suficiente ..................................... 49
1
1 Introdução
O conhecimento, ao longo da história da humanidade, tem-se encontrado disperso, segregado
e pouco organizado. Estes aspectos são uma consequência directa da evolução natural da
espécie humana, dificilmente colmatáveis na antiguidade. Actualmente, graças à evolução das
infra-estruturas de comunicação digital e dos sistemas de informação, o impacto da dispersão
foi minorado nas empresas, mas continuam a ser notórios os efeitos da segregação do
conhecimento nas instituições dedicadas à investigação. Por sua vez, a desorganização é
resultante do constante estudo do universo que nos rodeia, sendo perceptível em aspectos
como: ausência de definições formais, diversidade de terminologia para o mesmo conceito e
não sistematização do conhecimento adquirido.
A Web Semântica [1] tem desempenhado um papel importante na interoperabilidade entre
disciplinas, quebrando a usual barreira da segregação do conhecimento, um exemplo disto foi
referido por Tim Berners-Lee durante uma palestra realizada em 2009 [2]. Para responder à
questão: “Quais as proteínas envolvidas na transdução de sinal e que estão relacionadas com
neurónios piramidais?” não só foi necessário conhecimento de duas disciplinas, nomeadamente
Bioquímica e Neurologia, mas também vencer as barreiras da heterogeneidade dos dados e
representação de conhecimento.
O objectivo de criar um sistema de informação global, não é concretizável apenas com a
idealização da Web Semântica, é necessário resolver o problema da desorganização do
conhecimento. A Engenharia do Conhecimento tem exactamente esse propósito e trata da
definição de metodologias e concepção de ferramentas para a representação do conhecimento,
sendo a criação de ontologias o principal objectivo desta disciplina. As ontologias permitem
definir uma estrutura formal para os conceitos existentes num determinado domínio de
discurso, sendo a linguagem utilizada para criar ontologias na Web Semântica a Web Ontology
Language (OWL) [3]. Para além disto, as ontologias permitem associar semântica aos dados
que estão dispersos pela Web, criando um potencial para inquirição que se estende muito além
daquilo que é disponibilizado nos principais motores de pesquisa actuais, e.g. Google, Yahoo e
Bing. Este potencial surge do facto de ser possível a utilização de operadores matemáticos, bem
como, a indicação de quais as propriedades intervenientes na pesquisa.
É comum serem utilizadas as tecnologias que constituem a Web Semântica em disciplinas das
Ciências da Vida, tais como, Biologia, Genética, Medicina e principalmente na Bioinformática.
Isto deve-se ao facto de que o conhecimento nestas áreas estar em constante evolução, o que
implica alterações às ontologias, principalmente em matéria de taxonomia de classes. Estas
alterações são equivalentes num sistema de base de dados relacional à criação de novas
tabelas, resultando na alteração das relações existentes e obrigando à migração dos dados para
2
o novo modelo. Estes processos são morosos e potenciam o erro humano, como tal, é evitado o
uso de sistemas de bases de dados relacionais nestas disciplinas.
Os sistemas de informação semânticos são constituídos por um ou mais repositórios,
designados de triplestore. Nestes repositórios, os dados encontram-se na forma de afirmações1
compostas pelos sujeito, predicado e objecto, as quais também se designam por triplos. Isto
proporciona alterações taxonómicas a qualquer ontologia, alterando apenas uma afirmação ou
triplo e sem implicar a migração dos dados.
Realizar um projecto vocacionado para a compreensão das Ciências da Vida, como é o caso
deste projecto, implica necessariamente o recurso às tecnologias da Web Semântica.
Adicionalmente, para casos em que os dados estão em permanente alteração de tipo e volume,
é importante a realização de interfaces com o utilizador que facilitem o processo de
carregamento desses dados para o repositório semântico, preferencialmente validando se estão
de acordo com as ontologias definidas para os domínios de conhecimento em causa. Como as
ontologias nas disciplinas de Ciências da Vida estão em constante evolução, é fundamental que
as interfaces com o utilizador sejam adaptáveis às alterações ocorrentes nas mesmas. Esta
situação implica necessariamente processos de engenharia reversa que procedam ao
mapeamento entre a representação do conhecimento existente nas ontologias e a apresentação
gráfica adequada na interface com o utilizador.
1.1 Motivação
Mesmo com a evolução das infra-estruturas de comunicação digital e adopção destas nas
instituições de investigação, continua a existir dispersão do conhecimento cujas causas variam
de acordo com as regras organizacionais implementadas. No caso das instituições dedicadas ao
estudo de disciplinas das Ciências da Vida, o Excel [4] é normalmente a aplicação mais utilizada
para o armazenamento dos dados resultantes de experiências e na análise desses dados. Isto
implica que, estas instituições disponham dos dados, mas não de uma forma centralizada e que
permita análises globais aos mesmos, pois estes encontram-se dispersos em múltiplos livros2 de
Excel.
Com a evolução dos equipamentos de amostragem destinados a estudos científicos nas
disciplinas mencionadas, houve um aumento significativo de dados obtidos por cada experiência
realizada, tornando mais gravoso e evidente o problema da dispersão. Adicionalmente, ao
1 Termo em inglês é statement.
2 Termo em inglês é workbook e corresponde a um ficheiro Excel.
3
existirem contextos associados às experiências realizadas, os dados são segregados pelo
contexto de cada experiência, tornando mais difícil o inevitável processo de integração de todos
os dados institucionais num único repositório.
Foram sendo criados, nestas comunidades científicas, hábitos de trabalho que invalidam
algumas mudanças de paradigma na implementação de um sistema de informação.
Essencialmente a maioria dos cientistas são pragmáticos no que respeita à análise dos
resultados das experiências realizadas, o que determina à partida o Excel como ferramenta de
trabalho.
Urge então, implementar um sistema de informação que usufrua das qualidades dos sistemas
de informação semânticos, mas não obste a utilização do Excel como ferramenta de trabalho
nas comunidades já referidas. A implementação de um sistema com estas características
permitirá, aos seus utilizadores, um substancial contributo na eliminação da dispersão e
segregação dos dados institucionais, permitindo a futura obtenção de novo conhecimento com
base no conhecimento adquirido, por análise transversal dos dados. Adicionalmente, um
sistema com estas características permitirá um avanço significativo naquela que é a visão de
Tim Berners-Lee para um sistema de informação global: a Web Semântica.
1.2 Objectivos
Este projecto teve como principal objectivo a criação de interfaces com o utilizador para
sistemas de informação semânticos, tendo sido considerada prioritária a aceitação da solução
por parte dos utilizadores finais. Tal como já referido, os utilizadores alvo desta implementação
são Biólogos e Médicos, para os quais o Excel é a ferramenta de eleição para manipulação e
análise de dados. Desta forma, a implementação adoptada estende as funcionalidades do Excel
através do uso da .NET Framework [5] versão 3.5 e tecnologias de interoperabilidade, como o
Visual Studio Tools for Office (VSTO) [6] e os Primary Interop Assemblies (PIAs) [7].
Este projecto faz parte de um sistema desenvolvido e implementado por um colectivo de
pessoas ligadas à investigação na área da Bioinformática. Para o desenvolvimento do sistema,
ocorreram um conjunto de actividades para a coordenação da equipa de desenvolvimento,
tendo sido também objectivos deste projecto a adaptabilidade e autonomia do autor em função
das decisões tomadas nas reuniões de projecto. Neste sentido, objectivos adicionais foram
sendo definidos no decorrer de todo o trabalho, dos quais se destacam:
1. Aferição de compatibilidade entre versões actuais e futuras do Excel.
2. Determinação e implementação de recursos infra-estruturais de suporte ao
desenvolvimento.
4
3. Definição de métodos organizacionais para a reutilização da solução.
4. Definição dos procedimentos de instalação da solução.
5. Adaptabilidade a múltiplos repositórios de dados na forma de triplos3.
6. Independência do nível de inferência utilizado no servidor.
7. Suporte e manutenção às versões 2003 e 2007 do Excel.
A análise das ferramentas utilizadas neste projecto determinou a divergência entre as
funcionalidades inicialmente previstas e as implementadas. Desta forma, os objectivos
apresentados reflectem também o impacto das ferramentas no desenvolvimento deste trabalho.
1.3 Estrutura do relatório
Este documento é composto por sete capítulos, sendo o presente capítulo introdutório à
problemática da informação e conhecimento, descrevendo as motivações e objectivos que
levaram à concretização deste projecto.
Ao longo do presente relatório, os termos “SDLink” e “sistema” dizem respeito à totalidade do
sistema de informação semântico, implementado pela equipa de desenvolvimento que o autor
integra. Os termos “solução”, “projecto” e “implementação” dizem respeito à solução estudada
e implementada pelo autor no contexto da disciplina de Projecto e Seminário. O termo
“aplicação” refere-se à conjugação do Excel com a solução desenvolvida pelo autor.
O capítulo 2 descreve de forma sucinta os conceitos necessários à leitura dos restantes
capítulos e, contextualiza o problema do ponto de vista tecnológico. Aborda as tecnologias que
constituem a pilha da Web Semântica, recorrendo a exemplos do quotidiano para ilustrar a
aplicabilidade dos conceitos.
O capítulo 3 apresenta as arquitecturas do sistema e da solução, detalha o trabalho realizado
neste projecto, pormenorizando as decisões tomadas para a implementação. São descritos os
pilares funcionais da solução, sendo estes reflectidos na arquitectura adoptada.
O capítulo 4 expõe contribuições organizacionais resultantes da realização deste projecto e
refere quais as virtudes e limitações da solução e das tecnologias utilizadas.
O capítulo 5 apresenta as conclusões formuladas com o desfecho do projecto, fazendo uma
análise crítica através das principais dificuldades encontradas. Termina com a descrição de
actividades que complementam o trabalho realizado, permitindo a continuidade deste projecto.
3 Termo em inglês é triplestore.
5
2 Conceitos
Para a realização deste projecto foi necessário o estudo de um conjunto significativo de
tecnologias que constituem a Web Semântica. Estas tecnologias têm como propósito construir
uma base de trabalho normalizada para modelar o universo que nos rodeia e inferir novo
conhecimento a partir do conhecimento já adquirido. As ferramentas e normalizações que
constituem a Web Semântica estão organizadas, em forma de pilha, tal como ilustrado na
Figura 1.
Figura 1 – Pilha de normalizações da Web Semântica4
Na base da pilha da Web Semântica encontra-se o Unicode [8] que permite a representação
dos símbolos de alfabetos modernos à escala mundial. Adicionalmente, consta da base desta
pilha, o mecanismo de Uniform Resource Identifier (URI) que permite a identificação de
recursos na Web. Alguns exemplos de recursos são ficheiros de áudio ou vídeo, fotografias e
documentos.
Imediatamente acima na pilha da Web Semântica, encontramos a Extensible Markup Language
(XML) [9]. O uso do XML permite a interoperabilidade entre diferentes aplicações que partilhem
dados com formatos distintos. Isto é possível graças à inclusão de metadados5 conjuntamente
com os dados aplicacionais no mesmo ficheiro XML, permitindo que uma determinada aplicação
localize no ficheiro as propriedades para as quais pretende realizar determinada acção, ou seja,
representação gráfica, persistência em base de dados, entre outras.
4 Retirado de http://www.w3.org/2006/Talks/1023-sb-W3CTechSemWeb/SemWebStack-tbl-2006a.png
5 Dados que descrevem outros dados.
6
Outro aspecto importante do XML é o mecanismo de namespaces que permite a
desambiguação de termos iguais. Por exemplo, o termo banco pode referir-se a uma peça de
mobiliário ou a uma instituição financeira. Com o recurso a namespaces é possível prefixar o
termo de acordo com o domínio de discurso, possibilitando termos como mob:banco e
fin:banco, onde o prefixo mob denota mobiliário e fin denota o domínio financeiro. Isto é
particularmente útil na concepção de ontologias, onde é vulgar encontrarem-se representados
termos iguais com significados diferentes.
Uma ontologia pode ser construída recorrendo a diferentes níveis de formalismo na definição de
um modelo para representar o universo que nos rodeia. No entanto, na pilha da Web
Semântica considera-se a camada de ontologia como um modelo formal que descreve
indivíduos6, classes de indivíduos, propriedades de indivíduos, propriedades de classes,
associações entre indivíduos, associações entre classes, relações taxonómicas entre classes,
relações funcionais e transitivas, e por último, restrições sobre propriedades.
Considerando 𝐷 o domínio de discurso e 𝑅 a relação, são apresentadas de seguida as
definições formais para relação funcional e transitiva.
Relação funcional: ∀ 𝑥, 𝑦, 𝑧 ∈ 𝐷: 𝑥𝑅𝑦⋀𝑥𝑅𝑧 ⇒ 𝑦 = 𝑧
Relação transitiva: ∀ 𝑥, 𝑦, 𝑧 ∈ 𝐷: 𝑥𝑅𝑦⋀𝑦𝑅𝑧 ⇒ 𝑥𝑅𝑧
As especificações seguintes ao XML na pilha da Web Semântica permitem ir construindo níveis
adicionais de formalismo na criação de ontologias, capitalizando nas virtudes das camadas
anteriores, sendo estas descritas de seguida.
2.1 RDF
O RDF, Resource Description Framework [10], é uma recomendação W3C7 concebida
originalmente para normalizar descrições em recursos Web. Verificou-se, no entanto, que o RDF
é também apropriado para descrever recursos cuja proveniência não seja a Web.
Descrever um recurso é realizar um conjunto de afirmações sobre o mesmo. Estas afirmações
são também conhecidas como triplos, devido a serem constituídas por três partes,
sujeito-predicado-objecto, podendo ser representadas na forma de um grafo dirigido, em que
cada nó representa um sujeito ou objecto e cada arco representa um predicado, sendo o arco
6 Equivalente à instância de uma classe
7 World Wide Web Consortium
7
dirigido no sentido sujeito-objecto. A Figura 2 ilustra a representação em grafo de duas
afirmações sobre o álbum The Blue Notebooks.
http://ontomusica/albums/thebluenotebooks
http://ontomusica/musicos/richter/maxcompostoPor
11
temas
Figura 2 – Representação em grafo de triplos
A partir do grafo ilustrado na Figura 2, é possível determinar que são realizadas duas
afirmações, nomeadamente:
1. The Blue Notebooks é composto por Max Richter.
2. The Blue Notebooks tem onze temas.
O rectângulo contendo o valor onze denota um literal, enquanto as elipses denotam recursos.
Um factor importante no RDF é a identificação de recursos, que neste exemplo é realizada
através de um Uniform Resource Locator (URL). Um URL é uma das formas de criar um URI,
sendo a forma mais generalizada de identificar e aceder a um recurso na Web. Apesar do URL
permitir o acesso ao recurso na Web, alguns recursos descritos em RDF têm apenas o URL
como forma de identificação, não sendo possível o seu acesso. Isto ocorre com frequência em
triplestores, pois importa apenas identificar o recurso no repositório e o acesso a este último é
feito através de interfaces que o repositório disponibiliza. Exemplos de interfaces para
triplestores são Application Programming Interfaces (APIs) em linguagens como o Java [11], ou
APIs em estilos arquitecturais como o Representational State Transfer (REST) [12], designadas
de RESTFul APIs.
O facto de serem utilizados URLs para identificação de recursos não garante a identificação
unívoca desse recurso na Web. De facto esta característica é designada como No Unique
Names Assumption. Esta assunção de não unicidade de nomes, surge por ser impossível
garantir na Web que todas as pessoas usem o mesmo URI para identificar o mesmo recurso.
Através do uso de um triplestore é possível existir identificação unívoca de recursos em cada
repositório. Neste projecto, é considerada a existência de identificação unívoca de recursos,
uma vez que o propósito é um sistema de informação institucional no qual é possível gerir os
identificadores para cada recurso contidos num repositório.
Outra forma de representar os triplos é através de notações tais como o XML, Notation 3 (N3)
[13] e Terse RDF Triple Language (Turtle) [14]. Estas representações permitem a seriação dos
triplos de RDF para armazenamento em ficheiro ou para transferência entre computadores. A
notação utilizada neste projecto é XML, cuja sintaxe está especificada em [15]. Esta sintaxe tem
8
o nome oficial de RDF/XML para a qual é apresentado na Listagem 1 um exemplo que confere
com o ilustrado na Figura 2.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:mus="http://ontomusica#">
<rdf:Description rdf:about="http://ontomusica/albums/thebluenotebooks">
<mus:compostoPor rdf:resource="http://ontomusica/musicos/richter/max" />
<mus:temas rdf:datatype="http://www.w3.org/2001/XMLSchema#int">11</mus:temas>
</rdf:Description>
</rdf:RDF>
Listagem 1 - Representação de triplos em RDF
O RDF pode ser interpretado a três níveis distintos:
1. Ao nível da sintaxe, tratando-se apenas de um documento XML, por exemplo, contendo
elementos em forma de árvore.
2. Ao nível da estrutura é um conjunto de triplos na forma sujeito-predicado-objecto.
3. Ao nível semântico são grafos dirigidos com semântica pré-definida associada aos nós e
arcos.
É usual denominar-se “modelo RDF” ao nível semântico e “documento RDF” ao nível da sintaxe.
A razão pela qual se designa de modelo o nível semântico, reside na possibilidade de se
construírem ontologias de nível elementar, ou seja, podermos representar relações entre
recursos, mas estes últimos poderem não representar necessariamente conceitos. A designação
de documento ao nível da sintaxe denota que este é apenas um formato de seriação.
Outros dois aspectos importantes do RDF são os nós anónimos8 e o mecanismo de reificação.
Os nós anónimos são os que conceptualmente não têm identificador associado, embora nos
formatos de seriação é possível definir um identificador que é válido apenas no contexto do
ficheiro. Regra geral um nó anónimo é reconhecido por utilizar os símbolos sublinhado (_) e
dois pontos (:) como prefixo, por exemplo o nó _:node155vqsc0bx13 é um nó anónimo
possível num triplestore.
Os nós anónimos são úteis para realizar afirmações sobre algo desconhecido, podendo
relacionar o nó anónimo com outros nós que representem recursos ou valores conhecidos. Um
exemplo comum ocorre quando alguém tenta identificar um actor de cinema, mas não se
recorda do seu nome, referindo apenas filmes em que o actor participou. Nestes casos, os nós
8 Termo original é blank nodes.
9
anónimos permitem que o sistema de informação contenha dados sobre algo que é
desconhecido e que mais tarde pode ser identificado, deixando esse nó de ser anónimo.
O mecanismo de reificação permite fazer afirmações sobre afirmações, evitando conclusões
sobre recursos que representem opiniões. Por exemplo, a afirmação: “A Alice diz que o Bruno é
amigo do Carlos”, não representa necessariamente que o Bruno e o Carlos sejam amigos, pois
traduz-se apenas numa opinião da Alice. Como tal, o RDF dispõe das primitivas
rdf:Statement, rdf:subject, rdf:predicate e rdf:object que permitem construir
reificações.
2.2 RDFS
O RDFS, Resource Description Framework Schema, é uma extensão ao RDF com a qual podem
ser definidos conceitos e taxonomias, criando uma ontologia mais rica. Para isto, são
adicionadas ao RDF um conjunto de primitivas, das quais se destacam as que permitem definir
classes, subclasses e propriedades com domínio (domain) e contra-domínio (range). O domínio
refere a classe onde é aplicada a propriedade, o contra-domínio denota os valores possíveis
para a propriedade. A Listagem 2 descreve uma taxonomia entre classes que demonstra o uso
das primitivas referidas e esclarece a aplicabilidade das primitivas domain e range em
propriedades.
<rdf:Description rdf:ID="Animal">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</rdf:Description>
<rdf:Description rdf:ID="Mamífero">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
<rdfs:subClassOf rdf:resource="#Animal" />
</rdf:Description>
<rdf:Description rdf:ID="Cão">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
<rdfs:subClassOf rdf:resource="#Mamífero" />
</rdf:Description>
<rdf:Description rdf:ID="Humano">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
<rdfs:subClassOf rdf:resource="#Mamífero" />
</rdf:Description>
10
<rdf:Property rdf:ID="idade">
<rdfs:domain rdf:resource="#Animal" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#positiveInteger" />
</rdf:Property>
<rdf:Property rdf:ID="dono">
<rdfs:domain rdf:resource="#Cão" />
<rdfs:range rdf:resource="#Humano" />
</rdf:Property>
Listagem 2 - Exemplo de taxonomia de seres vivos
O exemplo da Listagem 2 representa uma cadeia hierárquica de relações de generalização e
especialização, onde é possível verificar que a propriedade idade é aplicada à classe Animal e
os seus valores possíveis são inteiros positivos. A propriedade dono é, por sua vez, aplicada à
classe Cão e os valores possíveis são instâncias de Humano.
A Figura 3 ilustra a representação da Listagem 2 através de um diagrama de classes Unified
Model Language (UML) [16] que visa a sua aplicação em linguagens de programação como o
C# [17] ou o Java.
Figura 3 – Diagrama de classes UML com taxonomia de seres vivos
Note-se que o atributo idade da classe animal não pode ser representado como inteiro positivo
tal como descrito em RDFS, sendo a melhor aproximação o tipo inteiro. Outro aspecto relevante
é que, por omissão, a cardinalidade nas relações entre recursos é de um para muitos9,
constatável na relação entre Cão e Humano.
9 No sentido sujeito-objecto.
11
2.3 OWL
O OWL, Web Ontology Language [3], é uma linguagem recomendada pela W3C para a criação
de ontologias através do aumento da expressividade existente no RDFS. O OWL está agrupado
em três níveis diferentes de expressividade, sendo considerada a linguagem propriamente dita
o OWL Full. Para além do OWL Full, existem também o OWL Lite e o OWL DL que são
consideradas sub-linguagens do OWL. Uma das principais condicionantes à adopção do
OWL Full é que o seu nível de expressividade torna a inferência computacionalmente complexa,
ao ponto de ser considerada uma linguagem indecidível.
Neste projecto, pretende-se usufruir da expressividade do OWL Lite incluindo suporte para
cardinalidade arbitrária como acontece em OWL DL. Em OWL Lite as restrições de cardinalidade
são existenciais, isto é, só assumem valores do intervalo 0,1 , ao passo que em OWL DL estas
podem assumir qualquer valor igual ou superior a zero.
O OWL introduz um conjunto de primitivas que permite definir ontologias que tenham
propriedades simétricas, transitivas e funcionais. A definição de propriedades em OWL é
dividida em dois tipos, a primitiva owl:ObjectProperty refere-se a relações entre instâncias
de classes e a primitiva owl:DatatypeProperty denota uma propriedade com valores
literais. Isto tem a vantagem de identificar a natureza da propriedade sem ter que analisar o
tipo definido no range. O OWL permite também a definição de restrições, estas não só definem
valores possíveis para uma propriedade, mas também permitem ser utilizadas para definir
condições necessárias e suficientes. Este tipo de condições permite que o motor de inferência
conclua se determinado indivíduo é instância de uma classe. Em OWL Lite são definidas através
da conjugação das primitivas de intersecção e restrição, podendo ser também definidas
directamente através da primitiva de equivalência. Seguem-se dois exemplos que pretendem
esclarecer a utilidade das condições necessárias e suficientes, bem como, demonstrar a
definição destas últimas através de restrições.
<owl:Class rdf:ID="Pessoa" />
<owl:Class rdf:ID="Disciplina" />
<owl:Class rdf:ID="Professor">
<rdfs:subClassOf rdf:resource="#Pessoa" />
</owl:Class>
<owl:DatatypeProperty rdf:about="nome">
<rdfs:domain rdf:resource="#Pessoa"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
12
<owl:ObjectProperty rdf:about="ensina">
<rdfs:domain rdf:resource="#Professor"/>
<rdfs:range rdf:resource="#Disciplina"/>
</owl:ObjectProperty>
Listagem 3 - Exemplo de condição necessária
Na Listagem 3 existem três classes: Pessoa, Disciplina e Professor. A propriedade nome
pertence à classe Pessoa. Professor é subclasse de Pessoa, possui a propriedade nome e
a propriedade ensina, que tem como valores possíveis instâncias de Disciplina.
Esta ontologia define que qualquer instância de Professor tem implicitamente os atributos
nome e ensina. No entanto, com esta ontologia, não é possível inferir que um Professor é
uma Pessoa que ensina pelo menos uma Disciplina. Para construir uma ontologia que
permita este tipo de inferência, deve ser aplicada uma restrição ao conceito de Professor,
sendo esta construção designada de condição necessária e suficiente, como exemplificado na
Listagem 4.
<owl:Class rdf:ID="Pessoa" />
<owl:Class rdf:ID="Disciplina" />
<owl:Class rdf:ID="Professor">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Pessoa" />
<owl:Restriction>
<owl:onProperty rdf:resource="#ensina" />
<owl:someValuesFrom rdf:resource="#Disciplina" />
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
<owl:DatatypeProperty rdf:about="nome">
<rdfs:domain rdf:resource="#Pessoa"/>
<rdfs:domain rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="ensina">
<rdfs:domain rdf:resource="#Professor"/>
<rdfs:domain rdf:resource="#Disciplina"/>
</owl:DatatypeProperty>
Listagem 4 - Exemplo de condição necessária e suficiente
Existem um conjunto de ferramentas para criação de ontologias. Estas facilitam o processo de
criação e validação das ontologias através de diagramas, tornando desnecessária a produção
13
manual de ficheiros como o exemplificado na Listagem 4. A ferramenta utilizada neste projecto
para análise e criação de ontologias foi o Protégé [18], cujo desenvolvimento é realizado pelo
centro de Biomédica e Informática da Universidade de Stanford em colaboração com a
Universidade de Manchester.
Sabendo que o OWL é uma extensão ao RDFS e consequentemente ao RDF, é apresentado na
Figura 4 um diagrama que ilustra os conceitos do RDF e como são estendidos até algumas das
principais primitivas do OWL. Um facto a sublinhar neste diagrama é que uma restrição em
OWL descende do conceito de classe de RDFS, tendo especial importância na forma como são
construídas interrogações a um triplestore para determinar a relação entre uma determinada
classe e as suas restrições.
Figura 4 – Diagrama parcial das extensões entre RDF e OWL
Uma restrição OWL é uma das primitivas que origina aquilo que é referido por classe anónima.
Isto deve-se ao facto de restrição ser subclasse de owl:Class e a sua declaração em OWL
não ter identificador associado. Devido a isto, as classes anónimas são representadas como nós
anónimos.
2.4 SPARQL
A linguagem de interrogação SPARQL Protocol and RDF Query Language (SPARQL) [19], é a
recomendação W3C para a camada de inquirição na pilha da Web Semântica. A sua sintaxe tem
14
similaridades com o Structured Query Language (SQL)10, nomeadamente na semântica de
cláusulas como select, distinct, from, union e where.
O SPARQL tem como directivas obrigatórias a select e a where na construção de expressões.
A partir da obrigatoriedade da cláusula select é possível concluir que o propósito do SPARQL
é apenas realizar consultas, ao contrário do SQL que permite, para além da consulta, realizar
manipulação dos dados, sendo estas operações conhecidas por CRUD (Create, Read, Update,
Delete). O SQL permite também a criação de modelos físicos de dados através da sua sintaxe
Data Definition Language (DDL), que no caso da Web Semântica é conseguido através de RDF,
RDFS ou OWL.
A obrigatoriedade da cláusula where determina que consultas num repositório de triplos RDF
são sempre restringidas à condição existente nesta cláusula. As condições passíveis de
utilização na cláusula where do SPARQL diferem substancialmente do SQL, sendo utilizados
conjuntos de triplos (grafos) onde são introduzidas variáveis em substituição do sujeito,
predicado ou objecto. As variáveis são prefixadas com um ponto de interrogação.
Como um triplestore pode conter vários repositórios e, este último pode conter várias
ontologias, o mecanismo de namespaces para além de ser fundamental para distinguir os
termos existentes, é também utilizado para simplificar as consultas através da cláusula prefix,
sendo apresentada, na Listagem 5 uma expressão SPARQL de exemplo.
prefix mus:<http://ontomusica#>
select ?album where {
?album rdf:type mus:album ;
mus:compostoPor <http://ontomusica/musicos/richter/max> .
?album mus:temas “11”^^xsd:int
}
Listagem 5 - Exemplo de expressão SPARQL
No exemplo ilustrado na Listagem 5 é assumida a existência de uma classe mus:album, que
consta como objecto no primeiro triplo da cláusula where. A declaração do prefixo mus permite
termos como mus:compostoPor em vez de <http://ontomusica#compostoPor>,
simplificando a expressão SPARQL. O exemplo traduz-se para a questão: que álbuns são
compostos por Max Richter e têm onze temas?
A cláusula where, neste exemplo, é um grafo composto de três triplos, estando os dois
primeiros triplos ligados através de um ponto e vírgula. Os dois últimos triplos estão ligados
através de um ponto. O ponto e vírgula permite a ligação entre dois triplos sem repetir a
10 Norma ISO/IEC 9075:2008.
15
variável usada como sujeito no primeiro triplo. O ponto permite a ligação de quaisquer dois
triplos, sendo necessária a repetição da variável no segundo triplo, mesmo que esta seja sujeito
em ambos os triplos. No exemplo apresentado, os últimos dois triplos da cláusula where estão
ligados por um ponto, devido a isto, é necessária a declaração da variável album no último
triplo, apesar de esta última ser também sujeito no triplo anterior.
Como um repositório pode conter várias ontologias, é importante poder definir em qual das
ontologias se pretende realizar uma consulta, sendo isto possível através da cláusula from. A
recomendação SPARQL define os valores a atribuir à cláusula from como sendo um named
graph, que geralmente corresponde ao URI a partir do qual foi criada a ontologia. Uma analogia
possível para named graph em SQL é o schema. O conceito de schema num motor de base de
dados relacional corresponde a um conjunto de tabelas, sabendo que uma tabela no modelo
relacional equivale a uma classe em RDFS ou OWL, então um schema será equivalente a um
grafo com uma determinada designação. Nos triplestores o named graph é geralmente
designado por: contexto.
A Listagem 6 representa a expressão SPARQL para a pergunta: quais os álbuns e seus
compositores que tenham onze ou doze temas?
prefix mus:<http://ontomusica#>
select distinct ?album ?artista where {
{ ?album rdf:type mus:album ;
mus:compostoPor ?artista ;
mus:temas “11”^^xsd:int
}
union
{ ?album rdf:type mus:album ;
mus:compostoPor ?artista ;
mus:temas “12”^^xsd:int
}
}
Listagem 6 - Utilização da cláusula union em SPARQL
Através do exemplo da Listagem 6, é possível constatar que cláusula union é equivalente à
cláusula or do SQL. Isto deve-se ao facto de que o SPARQL utiliza grafos para definir os
padrões a aplicar à cláusula where enquanto o SQL utiliza operadores binários.
Outro aspecto a ter em conta no SPARQL é que, como alguns repositórios fazem inferência no
carregamento de triplos, é possível ter várias afirmações equivalentes, por exemplo ao carregar
uma ontologia em OWL que defina apenas álbum como classe, serão também criados triplos
que afirmam que álbum é uma classe em RDFS. Desta forma, uma consulta SPARQL sem a
cláusula distinct geralmente produz resultados redundantes.
16
Como já referido, as restrições em OWL são subclasses de owl:Class, o que implica que estas
sejam representadas como nós anónimos. Assim, existe uma construção em SPARQL que
permite realizar consultas usando nós anónimos sem ter que indicar qualquer identificador para
esse nó, sendo essa construção denotada pelo parêntesis rectos.
A expressão SPARQL, representada na Listagem 7, permite obter todas as propriedades e
respectivos ranges de restrições sem explicitamente utilizar a construção owl:Restriction,
fazendo uso dos parêntesis rectos para referir nós anónimos. A expressão pode ser traduzida
para a seguinte questão: quais as propriedades e ranges que participam em triplos como
objectos e, nesses triplos o sujeito é um nó anónimo e os predicados são owl:onProperty e
owl:someValuesFrom?
select distinct ?prop ?range where {
[ owl:onProperty ?prop ;
owl:someValuesFrom ?range
]
}
Listagem 7 – Utilização de nós anónimos em SPARQL
Este tipo de consultas é preferível à utilização de identificadores para nós anónimos na cláusula
where da expressão SPARQL, isto porque a identificação de um nó anónimo não é garantida
como unívoca no sistema de informação. O identificador de um nó anónimo pode variar a cada
consulta SPARQL realizada.
17
3 Sistema de informação semântico
Este capítulo é constituído por duas secções principais: Arquitectura e Implementação.
Na secção referente à arquitectura, são apresentados os principais blocos constituintes do
sistema e da solução implementada, através da descrição das respectivas arquitecturas. Como
já referido, o sistema é o resultado do trabalho da equipa que o autor integra, sendo a solução
o projecto realizado pelo autor.
Na secção referente à implementação da solução, são detalhados os resultados das análises
realizadas às tecnologias da Web Semântica e das ferramentas de interoperabilidade com o
Excel, expondo os respectivos impactos na implementação. Adicionalmente, são referidas as
principais decisões tomadas e descritas as funcionalidades mais relevantes, agregadas por
camadas funcionais.
3.1 Arquitectura
3.1.1 Arquitectura do sistema
A arquitectura do sistema segue o modelo cliente-servidor. A parte cliente, âmbito deste
projecto, consiste numa aplicação de carregamento de dados para um repositório semântico,
sustentada na extensibilidade do Excel. A Figura 5 ilustra a arquitectura do sistema.
WWW
Clientes com Excel
Servidor WebRESTFul API
TriplestoreMotor SPARQL
Motor de inferência
Figura 5 – Arquitectura global do sistema
18
Enumeram-se de seguida as principais camadas existentes no lado do servidor:
Persistência: consiste no triplestore Bigdata [20].
Inferência: podem ser utilizados vários motores de inferência, tais como o FaCT++
[21], o Pellet [22] ou o OWLIM [23], entre outros. A escolha irá incidir sobre o que
permitir melhor integração com o resto do sistema e desempenho, para o nível de
expressividade necessária nas ontologias em implementação.
Inquirição: camada que permite interpretar as interrogações em SPARQL colocadas
pelas aplicações cliente e retornar os resultados em notações como o JavaScript Object
Notation (JSON) [24] ou XML. A notação utilizada neste projecto será a notação XML.
RESTFul API: permite a utilização das camadas acima referidas.
3.1.2 Arquitectura da solução
A parte cliente do sistema tem uma forte dependência do Excel. Apesar deste aspecto, foi ainda
assim, adoptada uma estratégia que permite reutilizar o trabalho desenvolvido, noutros
projectos que visem a utilização de um sistema de informação semântico e recorram à .NET
Framework.
É apresentado na Figura 6, um diagrama que ilustra a especialização em camadas lógicas
existentes na implementação deste projecto.
Excel
SDLinkAddIn
Error Handling
User Interface Forms
SDLinkLib
Ontology
SDLinkUserControls
MultiPick
SparqlXML
ParserSparqlComm
Data Retrieve
MappingUtils
Figura 6 – Arquitectura da solução
19
A solução é composta por uma camada aplicacional directamente relacionada com o Excel,
designada de SDLinkAddIn, que contém funcionalidades que recorrem directamente à
manipulação do modelo de objectos do Excel, como por exemplo, a criação de livros, folhas,
manipulação de células, entre outras. Nesta camada existem também um conjunto de
formulários gráficos de interacção com o utilizador, que dependem não só da camada de
manipulação com o Excel, mas também do acesso a variáveis globais11 existentes apenas neste
tipo de projectos.
Imediatamente abaixo desta camada, temos a biblioteca SDLinkLib que cujas funcionalidades
principais são permitir a interacção de qualquer aplicação com endpoints SPARQL. Esta
biblioteca dispõe de uma representação própria de ontologias, camada de comunicação com
servidores Web e uma classe especializada em SPARQL que permite a construção da ontologia
a partir de interrogações.
Foi também criada uma biblioteca com um controlo gráfico que permite a selecção múltipla de
valores e promoção dos mesmos, designado de Multipick, ilustrado na Figura 7.
Figura 7 – Controlo MultiPick
As camadas SDLinkLib e SDLinkUserControls, ao contrário da camada SDLinkAddIn, são
independentes do Excel. Em particular a camada SDLinkLib está fisicamente representada numa
biblioteca12 e é utilizável em qualquer aplicação que possa referir bibliotecas .NET, ao passo que
a biblioteca SDLinkUserControls, que contém o controlo Multipick, só pode ser utilizada em
aplicações Windows Forms.
11 Representadas na classe Globals de projectos Visual Studio Tools for Office.
12 Dynamic-link library.
20
3.2 Implementação da solução
3.2.1 Tipo de solução VSTO
Para a implementação desta solução foi necessária uma avaliação prévia à utilização do Excel
enquanto interface gráfica de um sistema de informação. Sabendo que para a implementação
dos requisitos é preferível a utilização de uma plataforma como a .NET Framework, foi realizada
uma avaliação da API de interoperabilidade entre esta e o Excel.
Como o Excel é uma aplicação Component Object Model (COM) [25] os seus objectos são
unmanaged13, sendo necessária uma camada de interoperabilidade para os poder utilizar em
ambiente managed. Para permitir esta interoperabilidade a Microsoft disponibiliza um conjunto
de bibliotecas designado de Primary Interop Assembly (PIA) [7]. Da análise realizada à
representação do modelo de objectos do Excel no PIA verificou-se que todos estão definidos
através de interfaces. Desta forma, é possível garantir que futuras versões do PIA têm que
implementar o contrato definido pelas interfaces, permitindo a implementação de uma solução
de extensibilidade sem um compromisso directo com versões do Excel ou do PIA.
Para o desenvolvimento de soluções de extensibilidade de produtos Office [26] a Microsoft
disponibiliza um conjunto de ferramentas designado de Visual Studio Tools for Office (VSTO)
[6]. O VSTO permite a criação de projectos do Visual Studio com as características necessárias
à interoperabilidade com produtos Office, por exemplo, a referenciação das bibliotecas de
interoperabilidade e definição de métodos para tratamento dos principais eventos. No caso da
implementação em Excel, versão 2007, é possível usufruir de uma interface gráfica para
personalização do Ribbon14. A Figura 8 ilustra o Ribbon implementado na aplicação.
Figura 8 – Ribbon implementado para a interface em Excel
13 Objectos que não usufruem das virtudes de um ambiente virtual de execução, como por exemplo gestão automática de memória.
14 Barra de ferramentas do Office que substitui os menus e barras de ferramentas das versões anteriores.
21
Existem três tipos de projectos VSTO disponíveis: Workbook, Template e Add-In. O tipo
adoptado é o Add-In por questões de versatilidade organizacional nas instituições que utilizem
o SDLink. De um modo geral, as folhas de cálculo em Excel são criadas por alguém responsável
por determinada experiência laboratorial, mas os ficheiros Excel resultantes são partilhados
entre colaboradores na instituição. Projectos VSTO dos tipos Workbook e Template, são
implementações ao nível do ficheiro Excel15, o que impede a utilização do ficheiro por
colaboradores que não tenham a .NET Framework ou os PIA instalados no seu posto de
trabalho. A Figura 9 ilustra o problema existente na partilha de ficheiros Excel em que seja
utilizada uma solução de extensibilidade Workbook ou Template.
VSTO
.NET
PIA
VSTO
.NET
PIA
SDLink
SDLin
k
Figura 9 – Problemas na partilha de ficheiros Excel
Recorrendo a um projecto VSTO do tipo Add-In, a implementação fará parte do posto de
trabalho e não do ficheiro Excel, permitindo que um colaborador que utilize o SDLink possa
partilhar os ficheiros produzidos com qualquer outro colaborador que tenha apenas o Excel
instalado.
3.2.2 Execução assíncrona
As tarefas a realizar pela implementação são demoradas e resultam da interacção do utilizador
com a interface gráfica. Esta combinação é propensa a bloqueios na interface com o utilizador,
caso se utilize a thread que trata os eventos dos controlos gráficos, para também desempenhar
as tarefas aplicacionais. De um modo geral, assim que uma tarefa termine, o utilizador deve ser
notificado por alterações na interface gráfica. É também desejável que a tarefa seja executada
15 A implementação é intrínseca ao ficheiro Excel, não podendo ser dissociada.
22
de forma assíncrona, permitindo que a interface com o utilizador fique disponível para
notificações de progresso e permita o cancelamento da tarefa. Por conseguinte, existem
geralmente duas tarefas a serem executadas por cada acção do utilizador: a tarefa demorada
𝑇1, que deve ser executada assincronamente e, a tarefa 𝑇2 que produz a actualização da
interface gráfica após a execução de 𝑇1. Assim, a solução implementa num só formulário todo o
suporte à execução assíncrona, com pós-execução síncrona de pares de tarefas {𝑇1 , 𝑇2},
oferecendo possibilidade de cancelamento de 𝑇1 ao utilizador. Desta forma, é possível conceber
formulários seguindo a mesma filosofia comportamental e que reaproveitam a implementação
da execução assíncrona com suporte a cancelamento.
A Figura 10 ilustra o fluxo de execução de dos pares de tarefas {𝑇1 , 𝑇2}, representando as duas
threads responsáveis pela execução destas tarefas. A MainThread é responsável pelo
processamento dos eventos na interface gráfica do Excel. A
AbortableBackgroundWorkerThread é a thread criada para executar, de forma
assíncrona, as tarefas aplicacionais desencadeadas pelo utilizador. O formulário
FrmAsyncBase é onde reside a implementação para a execução assíncrona de 𝑇1 com pós-
execução síncrona de 𝑇2. Este formulário é estendido na solução para suportar as principais
funcionalidades da aplicação.
FrmAsyncBase
MainThread AbortableBackgroundWorkerThread
RunWorkerAsync
MakeAsyncCall
FrmAsyncBase
T1
InvokeSyncAction
T2
Figura 10 – Fluxo de execução de tarefas aplicacionais
A Figura 11 ilustra o formulário de carregamento de ontologias, onde a tarefa 𝑇1 é a obtenção
das ontologias existentes no servidor e a tarefa 𝑇2 é a representação, no formulário, das
ontologias obtidas. Este formulário é uma extensão ao formulário FrmAsyncBase.
23
Inibição dos
controlos do
formulário
durante a
execução
assíncrona
Suporte a
cancelamento
Animação de
progresso
Figura 11 – Exemplo de extensão do formulário FrmAsyncBase
3.2.3 Representação da ontologia em memória
A representação em memória da ontologia diverge da representação em grafo existente em
OWL. Os grafos são estruturas indicadas para representar sistemas complexos, permitindo
flexibilidade para alterar os nós e arcos existentes. Nesta solução é primordial dispor de
eficiência, isto é, ter tempos de acesso muito curtos. Desta forma, a ontologia definida no
sistema de informação, para a qual o utilizador pretende realizar o carregamento de dados, é
representada em memória através de um conjunto de dicionários, cujos tempos de acesso são
próximos de O(1) [27]. A Figura 12 ilustra as classes que suportam a representação em
memória da ontologia.
Figura 12 – Diagrama de classes UML da representação em memória de ontologias
A representação da ontologia em memória corresponde a um conjunto de classes (klass) que,
por sua vez, contêm um conjunto de propriedades. As propriedades contêm a designação, tipo
24
(literal ou recurso), o seu valor (range) e restrições, permitindo assim representar toda a
expressividade do OWL, necessária à interface gráfica e interacção com o utilizador.
3.2.4 Tecnologias
Para suportar o desenvolvimento e testes foi utilizada a framework Sesame da
openRDF.org [28]. Esta framework contém um triplestore, um motor de inferência para RDFS16
e um endpoint SPARQL. Para a execução da framework Sesame, foi utilizado o servidor Web
Apache Tomcat versão 6.
A framework Sesame dispõe de uma ferramenta de gestão designada de Workbench. Esta
ferramenta permite a criação de novos repositórios, execução de interrogações SPARQL e
carregamento de ontologias.
Como já referido, um triplestore pode conter vários repositórios e um repositório pode conter
várias ontologias. Desta forma é possível manter o nível de isolamento considerado necessário
entre as ontologias, o que é útil para separar as ontologias de teste das ontologias de
produção. A Figura 13, apresentada de seguida, ilustra a existência de oito repositórios num
único triplestore, através da interface de gestão do Workbench.
Figura 13 – Workbench da framework Sesame
16 Não suportando inferência ao nível de expressividade do OWL.
25
3.2.5 Camadas funcionais
3.2.5.1 Comunicação
O modelo de objectos do Excel não dispõe de funcionalidades de conectividade através dos
protocolos existentes na Web. Desta forma, o recurso à .NET Framework permitiu abreviar o
tempo de desenvolvimento desta camada. O protocolo utilizado neste projecto é Hypertext
Transfer Protocol (HTTP) [29].
Esta camada permite que chamadas de outras camadas sejam transformadas em pedidos
HTTP. As respostas são devolvidas aos métodos invocantes sem qualquer alteração. Neste
sentido, a camada de comunicação não realiza qualquer interpretação das mensagens que
transmite e recebe, limitando-se a reencaminhar pedidos, devolver respostas e tratar eventuais
excepções de comunicação.
Esta camada funcional lida apenas com endpoints de triplestores, podendo no futuro ser
adoptada para suportar outras linguagens de inquirição ou novos formatos de representação.
De momento esta camada suporta apenas os seguintes formatos de representação:
1. Sparql-results+json
2. Sparql-results+xml
3. X-binary-rdf-results-table (BRTR)
Estas representações são necessariamente enviadas como parâmetro accept dos pedidos
HTTP, sendo de momento as mais utilizadas no panorama da Web Semântica. O formato BRTR
foi desenvolvido pela openRDF.org e visa a transferência de resultados em formato compacto.
O endpoint SPARQL é da forma:
http://<host>/<triplestore>/repositories/<repository id>
A Figura 14 representa quais as operações realizadas pela RESTFul API de endpoints SPARQL,
de acordo com o verbo HTTP utilizado.
Verbo Operação
GET Permite o envio de uma interrogação SPARQL através do parâmetro query, retornando os
resultados na representação solicitada, ou seja JSON, XML ou BRTR.
POST Suporta o envio de interrogações SPARQL com mais de 4096 caracteres, utilizando o
corpo do pedido para envio do parâmetro query.
Figura 14 – Quadro de operações da RESTFul API para endpoints SPARQL
26
Esta camada lida também com o carregamento de dados, recorrendo a um endpoint com a
forma:
http://<host>/<triplestore>/repositories/<repository id>/statements
A RESTFul API, para este endpoint é a representada na Figura 15.
Verbo Operação
GET Obtém a totalidade de triplos do triplestore na ausência de parâmetros, ou obtém triplos
de acordo com os parâmetros indicados no pedido.
PUT Remove todos os triplos do triplestore, substituindo-os pelos novos triplos enviados no
pedido.
DELETE Remove a totalidade de triplos do triplestore na ausência de parâmetros, ou remove
apenas os triplos coincidentes com os parâmetros indicados no pedido.
POST Adiciona os triplos enviados no pedido ao triplestore.
Figura 15 - Quadro de operações da RESTFul API para endpoints de triplos
Do quadro anterior, a implementação faz uso apenas do verbo POST para o carregamento de
triplos. Devido à implementação da RESTFul API dos triplestores, constatou-se que não era
possível realizar as operações habituais de CRUD17 através desta solução, sendo esta a principal
diferença entre os objectivos iniciais do projecto e a implementação final.
O carregamento de dados consiste no envio de uma estrutura em RDF/XML no corpo do pedido
POST. Para estes pedidos, o servidor envia sempre a mesma resposta: HTTP/1.1 204 NO
CONTENT.
3.2.5.2 Análise sintáctica
A camada de análise sintáctica18 é responsável por realizar a tradução dos formatos de resposta
do triplestore às interrogações SPARQL. O formato eleito para o sistema foi o SPARQL Query
17 Create, Read, Update e Delete.
18 Termo em inglês é parse.
27
Results XML [30]. Sendo um formato XML, a implementação recorre à tecnologia LINQ19 to XML
para simplificar o processo de análise sintáctica e tornar o código mais legível.
O principal objectivo desta camada é converter os formatos de representação vindos do
triplestore em tabelas onde as colunas são as variáveis da interrogação SPARQL e as linhas os
seus respectivos valores. É apresentado na Listagem 8 um exemplo de resposta em formato
SPARQL Query Results XML.
<?xml version='1.0' encoding='UTF-8'?>
<sparql xmlns='http://www.w3.org/2005/sparql-results#'>
<head>
<variable name='prop'/>
<variable name='range'/>
</head>
<results>
<result>
<binding name='prop'>
<uri>http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#locatedIn</uri>
</binding>
<binding name='range'>
<uri>http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Region</uri>
</binding>
</result>
</results>
</sparql>
Listagem 8 – Exemplo de resultados SPARQL em XML
O exemplo da Listagem 8, demonstra a presença das variáveis prop e range e respectivos
valores, correspondendo ao exemplo da Listagem 7 quando aplicado à ontologia dos vinhos da
W3C [31].
Sabendo que existem mais formatos utilizados como resposta a interrogações SPARQL, como o
SPARQL Query Results in JSON [32], foi definida a interface ISparqlResultsParser para
permitir futuras implementações de analisadores sintácticos, mantendo a compatibilidade com o
resto da implementação. Para a utilização específica no sistema SDLink, é fornecida a
implementação do analisador sintáctico SparqlXmlParser. A Figura 16 ilustra a interface
ISparqlResultsParser e a sua implementação através do tipo SparqlXmlParser.
19 Language-Integrated Query
28
Figura 16 – Interface e respectiva implementação do analisador sintáctico
3.2.5.3 Construção da ontologia em memória
A construção da ontologia em memória é o processo que permite a conversão da representação
em OWL da ontologia existente no triplestore, para a representação em memória adoptada
nesta solução e descrita em 3.2.3. Este processo é constituído por um algoritmo e por um
conjunto de interrogações SPARQL.
Esta funcionalidade é suportada em exclusivo pelo tipo Sparql, o qual inclui o algoritmo de
construção da ontologia em memória e as interrogações SPARQL necessárias à consulta da
ontologia existente no triplestore. Como o tipo Sparql faz parte da biblioteca SDLinkLib todas
as interrogações SPARQL estão disponibilizadas como métodos públicos, permitindo a sua
utilização em contextos similares noutras aplicações que utilizem esta biblioteca.
O algoritmo para a construção da ontologia em memória é composto pelas etapas: Criar
Classes, Criar Propriedades, Criar Restrições e Criar Taxonomia. Cada uma destas etapas
recorre às camadas de comunicação e análise sintáctica.
Na Figura 17 é apresentado um diagrama de sequência simplificado, que ilustra as principais
etapas do algoritmo de construção. Por questões de simplificação só é representada a
interacção com as camadas de comunicação e análise sintáctica na primeira etapa do algoritmo,
assim como, os nomes apresentados não correspondem aos métodos concretos da
implementação.
29
Figura 17 – Diagrama de sequência para a construção da ontologia em memória
3.2.5.4 Mapeamento
O processo de mapeamento exigiu a definição de regras de transformação entre a
representação em OWL de uma ontologia e a representação em memória da mesma ontologia,
bem como, a sua apresentação em Excel.
Para realizar este processo foi necessário definir qual o nível de expressividade necessário para
o sistema. Durante as reuniões de projecto, ficou definido que o nível de expressividade mais
adequado seria o suportado por OWL Lite com suporte adicional para a definição de
cardinalidade arbitrária como acontece no OWL DL.
Assim, o método de trabalho adoptado consistiu no levantamento de todas as primitivas OWL,
assim como, na consulta de bibliografia, especificação do OWL e ontologias exemplo. Isto
30
permitiu determinar o objectivo de cada primitiva, os seus casos de uso e a utilidade na
interface gráfica. A Figura 18 fornece uma visão geral de quais as primitivas de OWL Lite
suportadas e excluídas na implementação.
Schema (In)Equality Properties Characteristics Property Restrictions
Class (Thing, Nothing) equivalentClass ObjectProperty Restriction
rdfs:subClassOf equivalentProperty DatatypeProperty onProperty
rdf:Property sameAs inverseOf allValuesFrom
rdfs:subPropertyOf differentFrom TransitiveProperty someValuesFrom
rdfs:domain AllDifferent SymmetricProperty
rdfs:range distinctMembers FunctionalProperty
Individual InverseFunctionalProperty
Restricted Cardinality {0;1} Header Information Class Intersection
minCardinality Ontology intersectionOf
maxCardinality imports
cardinality
Versioning Annotation Properties Legenda versionInfo rdfs:label Suportada
priorVersion rdfs:comment Excluída
backwardCompatibleWith rdfs:seeAlso
incompatibleWith rdfs:isDefinedBy
DeprecatedClass AnnotationProperty
DeprecatedProperty OntologyProperty
Figura 18 – Primitivas suportadas e excluídas da implementação
Do conjunto de primitivas OWL, ilustradas na Figura 18, são descritas de seguida as
justificações para a implementação das primitivas suportadas.
owl:Ontology: Contém o identificador da ontologia na forma de URL, sendo necessário para
suportar a distinção de múltiplas ontologias no mesmo repositório. Na implementação permite
que o utilizador seleccione a ontologia para a qual pretende realizar o carregamento de dados.
owl:Class: Primitiva que declara uma classe na ontologia. A implementação usa as classes
existentes na ontologia não só para a representação da ontologia em memória, mas também
para permitir que o utilizador crie instâncias para um subconjunto das classes da ontologia.
Uma classe é representada directamente por uma folha de cálculo.
rdfs:subClassOf: Permite a construção de taxonomias entre classes da ontologia. O seu
suporte é obrigatório pois classes descendentes têm as mesmas propriedades que as suas
ascendentes, implicando a respectiva representação em memória e na folha de cálculo.
31
owl:ObjectProperty: Propriedade de uma classe que refere outra classe na ontologia, sendo
representada na folha de cálculo como o cabeçalho de uma coluna.
owl:DatatypeProperty: Propriedade de uma classe que refere um literal XML Schema (XSD),
sendo representada como cabeçalho de uma coluna na folha de cálculo.
rdfs:domain: Indica a classe onde é aplicada uma propriedade, o seu suporte é obrigatório
para a correcta representação das propriedades em memória, bem como para o correcto
mapeamento na folha de cálculo da classe referida por rdfs:domain.
rdfs:range: Indica a classe ou tipo XSD cujas instâncias representam valores possíveis da
propriedade. A sua representação é um comentário na célula que representa a propriedade
indicando qual o tipo definido através desta primitiva.
owl:Restriction: Representa uma restrição aplicada a uma propriedade. Para a sua declaração
em OWL é necessária a primitiva onProperty conjuntamente com uma das primitivas
allValuesFrom, someValuesFrom, minCardinality, maxCardinality e cardinality. O seu suporte é
necessário para alertar o utilizador para restrições existenciais ou de cardinalidade.
owl:onProperty: Permite referir em qual propriedade da classe é aplicada a restrição. O seu
suporte está implícito através da primitiva owl:Restriction.
owl:allValuesFrom: Indica a classe cujas instâncias podem ser referidas na propriedade com
esta restrição. Todos os valores da propriedade, caso existam, devem ser do tipo referido. Esta
restrição é implementada como não tendo restrição existencial, nem outra cardinalidade
associada.
owl:someValuesFrom: Indica a classe cujas instâncias podem ser referidas na propriedade
com esta restrição. Deve existir pelo menos um valor na propriedade que seja do tipo referido.
Esta restrição é implementada como sendo de restrição existencial, podendo ser considerada de
cardinalidade maior ou igual a um.
owl:minCardinality: Indica qual a cardinalidade mínima de uma propriedade no contexto de
uma restrição. A implementação procede à verificação desta restrição durante o processo de
upload.
owl:maxCardinality: Indica qual a cardinalidade máxima de uma propriedade no contexto de
uma restrição. A implementação procede à verificação desta restrição caso o seu valor seja
igual a um no formulário de validação. Caso seja definida com outro valor a verificação será
imediatamente anterior ao upload.
32
owl:cardinality: Indica qual a cardinalidade exacta de uma propriedade no contexto de uma
restrição. A implementação segue as mesmas regras definidas para owl:maxCardinality.
owl:intersectionOf: Primitiva que define intersecções restrições e permite inferência por
conjugação de recursos da ontologia. Por exemplo, a classe Professor pode ser definida à
custa da intersecção da classe Pessoa com a propriedade leccionaDisciplina preenchida
com instâncias da classe Disciplina, ou seja, através de uma condição necessária e
suficiente. O seu uso é obrigatório, pois implica a existência das propriedades da classe Pessoa
na classe Professor, bem como define que a propriedade leccionaDisciplina tem como
domain Professor e range Disciplina.
rdfs:label: Usada para a descrição das classes e propriedades de uma ontologia. É suportada
através da sua inclusão como comentário na célula da propriedade a que se refere.
owl:Individual: Primitiva que possibilita a criação de instâncias de classes. A implementação
usa a construção de RDF para permitir a utilização por qualquer motor de inferência. A sintaxe
em OWL é: <owl:Individual rdf:ID="identificador"> … </owl:Individual>, enquanto a
sintaxe em RDF é: <rdf:Description rdf:about="url"> … </rdf:Description>
O processo de mapeamento termina com a criação das folhas de cálculo, devidamente
formatadas de acordo com a representação em memória da ontologia. Geralmente existem
várias folhas de cálculo por ontologia, uma vez que uma folha de cálculo representa uma
classe. Assim, a operação de criação de folhas de cálculo é cíclica, iterando por cada classe da
ontologia, sendo propícia à sua execução em paralelo nos sistemas que dispõem de mais que
um núcleo de processamento.
Uma vez que os controlos gráficos em aplicações COM, como é o caso do Excel, seguem o
modelo Single Threaded Apartment (STA) [33], existe apenas uma thread a processar as
mensagens da interface gráfica. Adicionalmente, não é possível a criação de uma folha de
cálculo sem que esta seja representada de imediato na interface gráfica do Excel. Desta forma,
apesar de existir potencial para execução em paralelo, não é possível tirar partido de múltiplos
núcleos de processamento do sistema em operações que recorram ao modelo STA nas
aplicações COM.
Esta camada da solução encontra-se implementada na classe estática Mapping, cujas
principais funcionalidades são: Criação de um livro Excel, através da representação em memória
de uma ontologia20 e produção de RDF/XML com base num livro. Adicionalmente, esta classe
20 Implementada no tipo Ontology
33
implementa também a funcionalidade de persistência descrita no ponto 3.2.5.5. A Figura 19
ilustra a classe estática Mapping e os seus principais métodos.
Figura 19 – Diagrama da classe Mapping
3.2.5.5 Persistência
Para não obrigar o utilizador a ter que trabalhar ininterruptamente na mesma sessão de
carregamento de dados até realizar o upload para o triplestore, é fundamental persistir a
ontologia existente em memória. Isto permite que o utilizador feche o Excel ou o livro em que
trabalha, para mais tarde, voltando a abrir o respectivo livro, poder continuar a trabalhar na
mesma ontologia e com os dados que havia introduzido. Para permitir esta versatilidade de
utilização, são criadas um conjunto de folhas adicionais no livro que ficam escondidas do
utilizador, sendo estas criadas durante o processo de mapeamento. As folhas escondidas são
sempre no mínimo duas, ficando colocadas sempre como as primeiras do livro. A primeira folha
contém dados relativos à ontologia, sendo estes:
Namespace da ontologia, armazenado na célula A1;
Nome do grafo da ontologia, armazenado na célula A2;
Quantidade de folhas de cálculo de persistência adicionais, armazenada na célula A3;
Quantidade de classes mapeadas no livro, armazenada na célula A4;
Identificador do livro, armazenado na célula A5.
Um exemplo destes dados é representado na Figura 20.
34
Figura 20 – Folha de cálculo principal de persistência
O identificador do livro é necessário para ser possível o registo de eventos que permite a
validação de dados online, sendo este pormenor de implementação detalhado em 3.2.5.6.
A decisão do posicionamento das folhas escondidas está relacionada com o desempenho da
solução. Quando o utilizador abre um livro no Excel, despoleta a execução de um método que
analisa se o livro aberto é proveniente do SDLink. Este processo de análise deve ser o mais
célere possível, como tal, o método limita-se a verificar se o nome da primeira folha do livro é
“sdlinkHiddenSheet”, caso seja, o método realiza o processo assíncrono de carregamento da
ontologia para a memória.
As restantes folhas escondidas contêm a descrição de cada classe mapeada no livro, com a
disposição de uma classe por topo de coluna e suas propriedades como segunda e demais
linhas da mesma coluna, como ilustrado na Figura 21.
Figura 21 – Disposição de classes e suas propriedades
A quantidade de classes existentes por folha dependerá da versão do Excel, sendo esta
determinada pela solução. Assim, é possível a criação na quantidade adequada das folhas
adicionais para persistência da ontologia.
35
3.2.5.6 Validação
A validação é um processo composto por várias operações que são complementares. Estas
operações ocorrem em diferentes fases da utilização do Excel. A validação online é uma destas
operações, a qual ocorre durante a introdução de valores em propriedades do tipo
owl:ObjectProperty. Nesta operação é apresentado ao utilizador, o formulário de validação
contendo uma lista paginada com as instâncias dos recursos referidos pela propriedade. O
formulário de validação está ilustrado na Figura 22.
Figura 22 – Formulário de validação
O formulário de validação descende do formulário de execução assíncrona, beneficiando assim
do processo de execução assíncrona com pós-execução síncrona e suporte a cancelamento.
Adicionalmente suporta filtragem para permitir ao utilizador uma mais rápida obtenção de
valores procurados em alternativa à navegação exaustiva nas páginas de resultados.
Devido ao facto da especificação SPARQL não definir uma directiva de contagem21, a
implementação de paginação neste formulário não pode determinar a priori a quantidade de
páginas navegáveis. Como tal, o mecanismo implementado permite que o utilizador navegue
até encontrar a primeira página sem resultados, após isto o formulário impede consequentes
avanços no índice de paginação para permitir que o retorno à última página com resultados
seja imediato.
Para a implementação da funcionalidade de validação online é necessário o registo de um
delegate [34] no evento SheetSelectionChange da folha de cálculo. Este evento ocorre a
21 Em SQL a directiva de contagem é a count.
36
cada mudança de selecção pelo utilizador nas células de uma determinada folha. Para
determinar qual a folha onde ocorreu o evento foi necessária a utilização de um identificador
global para cada livro. Esta necessidade surge do facto do Excel suportar a utilização
simultânea de vários livros, exemplo ilustrado na Figura 23.
Figura 23 – Utilização de múltiplos livros no Excel
Desta forma, é necessária uma estrutura que permita associar a cada livro a respectiva
ontologia carregada em memória. Como as referências para os objectos Excel são do tipo
TransparentProxy, estas diferem consoante a acção que as obtém, isto é, o processo de
criação de um livro SDLink cria uma referência para o livro que difere da referência oriunda do
evento SheetSelectionChange. Este problema impossibilitava a identificação unívoca dos
livros no tratamento do evento, impedindo o correcto funcionamento do processo de validação.
A solução encontrada foi criar um identificador global para cada livro tirando partido de valores
como o código de hash do livro criado durante o mapeamento, a data e hora do sistema
convertida para ticks e a contagem de ticks desde o arranque do sistema. Desta forma é
possível diminuir a probabilidade de colisão para 1 1035 , ou seja, um em cem mil quintiliões.
Para além da validação online, acima descrita, existem ainda as operações de validação na
introdução e validação no upload. A validação na introdução consiste em recorrer à validação
de dados intrínseca do Excel, a qual tem utilidade apenas para verificação de valores inteiros
positivos ou negativos e para valores booleanos. Para definir uma validação intrínseca do Excel,
é necessário fornecer sempre o tipo de validação (inteiros, decimais, data, hora, lista, etc.), o
operador matemático e, dependendo do operador, um ou os dois valores do intervalo. Os
mesmos requisitos são aplicados quando programaticamente se define uma regra de validação
37
no Excel. Na Figura 24 é apresentado o formulário nativo do Excel para criação de regras de
validação pelo utilizador, sendo o exemplo escolhido a verificação de inteiros positivos.
Figura 24 – Formulário do Excel para criação de regras de validação
Dos tipos existentes na especificação XML Schema, a validação de inteiros positivos e negativos
é de directa implementação por ser possível definir um dos valores do intervalo, sendo
impossível a implementação de uma regra de validação intrínseca que verifique apenas se um
valor é inteiro, pois é sempre necessária a indicação de um operador e a definição de um ou
dois valores para o operador seleccionado. Assim, para o caso do tipo positiveInteger é
definida a regra de validação no Excel cujo tipo é inteiro, o operador é maior que e um
dos valores do intervalo é definido com zero, como exemplificado na Figura 24. No caso de
valores do tipo booleano é possível definir uma lista de validação com o conjunto de valores
𝑡𝑟𝑢𝑒, 𝑓𝑎𝑙𝑠𝑒 respectivamente. A Figura 25 ilustra a validação de valores booleanos através de
uma lista.
Figura 25 – Lista de validação para valores booleanos
38
Durante o processo de upload, ocorre a última operação de validação, consistindo na conversão
explicita de literais para tipos internos .NET, evitando incoerências de tipos durante
carregamento de dados para o triplestore. As incoerências de tipo, após o upload, têm como
consequência causar excepções internas no repositório, sendo preferível uma excepção
aplicacional no cliente durante o processo de upload, do que corromper o triplestore e invalidar
o correcto funcionamento do mesmo.
A Listagem 9 representa um caso de incoerência de tipos, tendo o valor literal 𝑜𝑛𝑧𝑒 definido
para uma propriedade que deverá receber valores numéricos do tipo inteiro.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:mus="http://musica.org/exemplo">
<rdf:Description rdf:about="http://albuns/thebluenotebooks">
<mus:compostoPor rdf:resource="http://musicos/richter/max" />
<mus:temas rdf:datatype="http://www.w3.org/2001/XMLSchema#int">onze</mus:temas>
</rdf:Description>
</rdf:RDF>
Listagem 9 - Exemplo de incoerências de tipo em RDF
Após o carregamento da Listagem 9 para o triplestore é possível realizar consultas que expõem
falhas internas por inconsistência de tipo, sendo representado em primeiro lugar o resultado
expectável de uma consulta ao repositório. Assim, num pedido de descrição do recurso Max
Richter com a construção describe <http://musicos/richter/max>, o resultado obtido
é ilustrado na Figura 26.
Figura 26 – Resultado normal da directiva para descrição de recursos
39
Caso seja utilizada a directiva describe <http://albuns/thebluenotebooks> o
resultado, apresentado na Figura 27, é uma excepção no triplestore.
Figura 27 – Excepção no triplestore por incoerência de tipos
3.2.6 Configuração da aplicação
A aplicação permite a configuração de qual o repositório alvo para carregamento de dados. A
configuração é suportada por um ficheiro app.config que se encontra em formato XML. A
Listagem 10 apresenta a estrutura do ficheiro de configuração.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="hostUrl" value="http://localhost:8080/openrdf-sesame/repositories/rep5" />
<add key="recPerPage" value="10" />
</appSettings>
</configuration>
Listagem 10 – Ficheiro de configuração
Os parâmetros envolvidos na configuração da aplicação são apenas dois: o URL do repositório e
a quantidade de registos por página no formulário de validação.
40
Para evitar a alteração manual deste ficheiro, por parte do utilizador, a aplicação disponibiliza
um formulário de configuração. Este formulário manipula o ficheiro, persistindo as
configurações definidas pelo utilizador e, garante a adopção imediata dos parâmetros pela
aplicação, ou seja, se durante o processo de introdução de dados nas folhas de cálculo, o
utilizador pretender alterar a quantidade de registos por página, então basta aceder ao
formulário de configuração e alterar o respectivo valor, confirmando de seguida a alteração. A
Figura 28, apresentada de seguida, ilustra o formulário de configuração.
Figura 28 – Formulário de configuração
3.2.7 Modelo de instalação
Uma vez que são raros os postos de trabalho que têm simultaneamente as versões 2003 e
2007 do Excel, não é prudente realizar um instalável da solução que incorpore os PIAs para
ambas as versões referidas. Durante o processo de instalação, é verificada a correspondência
do Office para os PIAs a instalar, caso o instalável tenha ambas as versões dos PIAs e o posto
de trabalho disponha apenas de uma versão do Office, a instalação será abortada. Como tal, é
necessária a produção de dois instaláveis, um para cada versão do Excel. Este sistema prevê o
suporte e manutenção, desta solução, quando aplicada às versões 2003 e 2007 do Excel.
O modelo de instalação das soluções VSTO exige a indicação explícita, por parte do utilizador,
da confiança que este deposita no fornecedor da solução. Esta medida de segurança, designada
de Code Access Security (CAS) [35], obriga à utilização da técnica de instalação ClickOnce [36]
para que findando o processo de instalação o utilizador possa de seguida utilizar a solução. Este
modelo recorre assim à utilização de certificados digitais X.50922, que possibilita a utilização da
cadeia de confiança inerente ao certificado, dispensando a confirmação explícita de confiança
por parte do utilizador, quando o utilizador reconhece como sendo de confiança, uma das
entidades pertencentes à cadeia relacionada com o certificado utilizado no instalável.
22 http://www.itu.int/rec/T-REC-X.509/en
41
4 Contribuições adicionais e avaliação
Este capítulo expõe, na sua secção de contribuições adicionais, um conjunto de contributos
organizacionais que têm impacto na infra-estrutura de suporte e metodologias de trabalho.
Adicionalmente, na secção de avaliação da solução, são detalhados os principais aspectos que
constituem vantagens e limitações da solução. Alguns dos aspectos referidos incidem sobre as
tecnologias que constituem a base de trabalho deste projecto, sendo realizadas comparações
com outras tecnologias utilizadas no âmbito da Engenharia Informática e de Computadores.
4.1 Contribuições adicionais
4.1.1 Infra-estrutura de suporte
Implementações baseadas em VSTO requerem um ambiente de desenvolvimento específico
para cada versão do Office. Por exemplo, para produzir uma solução que estenda o Excel
versão 2003 é necessária a instalação exclusiva da versão 2003 do Office. Isto tem implicações
organizacionais e de planeamento infra-estrutural, pois caso uma instituição ou empresa
pretenda desenvolver em simultâneo para múltiplas versões do Office, terá que ter postos de
trabalho exclusivos para cada versão [37].
Soluções baseadas em VSTO, como é o caso da solução proposta, são consideradas fat client,
ou seja, soluções que realizam uma parte importante do processamento no sistema, tendo
algum nível de autonomia do servidor. Desta forma, este tipo de soluções requer
obrigatoriamente a instalação de um conjunto de pré-requisitos no posto cliente. Isto é
contrário ao que acontece nas soluções Web, que dependem apenas da existência de um
browser que suporte as normas W3C. Assim, é também importante a verificação de
conformidade do instalável com postos de trabalho que tenham apenas o Excel instalado,
dispondo do mínimo de bibliotecas de suporte. Este tipo de verificação não pode ser realizado
no ambiente de desenvolvimento, uma vez que este dispõe de todos os requisitos necessários à
execução da solução.
Com base nas considerações acima descritas, foi definido como requisito de suporte ao
desenvolvimento e testes deste projecto, um conjunto de quatro ambientes diferentes de
trabalho. Um dos ambientes, dispondo do Visual Studio 2008 e do Excel 2007, permite o
desenvolvimento da solução para a versão 2007 do Excel. Outro ambiente de desenvolvimento
é requerido, desta feita, recorrendo ao Visual Studio 2008 e ao Excel 2003. Por fim são
necessários mais dois sistemas para validação do instalável, em cada versão do Excel
42
respectivamente. Estes sistemas dispõem apenas do sistema operativo e de uma das versões
do Excel.
Dispor de uma infra-estrutura deste tipo, é nos dias de hoje possível, sem incorrer em custos
de aquisição de computadores, utilizando plataformas de virtualização. Desta forma, os
ambientes de desenvolvimento e testes foram disponibilizados através da utilização do sistema
de virtualização Proxmox Virtual Environment [38].
A Figura 29 ilustra a infra-estrutura utilizada para a realização deste projecto.
Plataforma de Virtualização Proxmox
InstalaçãoExcel 2007
InstalaçãoExcel 2007
DesenvolvimentoExcel 2003
DesenvolvimentoExcel 2003
InstalaçãoExcel 2003
InstalaçãoExcel 2003
Desenvolvimento
Excel 2007
Figura 29 – Infra-estrutura de suporte ao desenvolvimento e testes
4.1.2 Metodologias
A forte dependência do Excel torna difícil a decomposição da solução, em partes reutilizáveis
apenas por referência em outros projectos. Soluções VSTO estão dependentes do produto
Office, não pelo modelo de objectos do produto, que são interfaces, mas sim pelas classes de
suporte criadas automaticamente pelo template de projecto VSTO. Uma dessas classes é a
Globals que permite o acesso à instância do Excel e seus controlos gráficos, nomeadamente o
Ribbon, os menus e barras de ferramentas. Havendo necessidade de criar formulários como
interface gráfica com o utilizador, estes estão dependentes da solução VSTO, porque têm que
manipular classes funcionais que estão directamente dependentes do Excel e não são
facilmente convertidas numa interface genérica.
43
A solução para o reaproveitamento passa pela organização do código fonte. Tendo a solução
para Excel 2003 que obrigatoriamente implementar programaticamente a sua estrutura de
menus, mantendo referências raiz para cada opção de menu criada. Assim, a utilização do
código produzido é realizada através da cópia directa das classes e formulários do SDLinkAddIn,
incluindo o ponto de entrada na solução: o ficheiro ThisAddIn.cs.
Os projectos Visual Studio referentes às bibliotecas SDLinkLib e SDLinkUserControls não
necessitam de ser incorporados na solução Visual Studio, bastando apenas copiar os
respectivos assemblies e definir as respectivas referências no projecto VSTO.
A Figura 31 apresenta o ambiente de desenvolvimento para a versão 2003 do Excel, já o com o
código migrado e a solução em execução.
Figura 30 – Solução implementada na versão 2003 do Excel
Note-se que existe apenas um projecto no Visual Studio, o projecto base do VSTO. Isto pelo
facto de serem aproveitadas as bibliotecas SDLinkLib e SDLinkUserControls, tornando
desnecessária a migração de mais código.
44
4.2 Avaliação da solução
4.2.1 Vantagens da Web Semântica
O recurso às tecnologias e normalizações que constituem a Web Semântica tem várias
vantagens na criação de sistemas de informação. As vantagens mais relevantes são
apresentadas de seguida.
Heterogeneidade dos dados: num sistema de informação semântico e consequentemente
na Web Semântica todos os dados são representados em RDF. Isto permite que vários
repositórios de triplos possam ser consultados em simultâneo sem o problema da representação
dos dados existentes em cada repositório, como acontece com as representações em bases de
dados relacionais.
Expressividade relacional: muitas ontologias representam conceitos que têm múltiplas
relações entre si. Num modelo relacional é possível que os diagramas ilustrem as diferentes
relações através do uso de um verbo, no entanto, este verbo não é persistido fisicamente na
base de dados, tornando difícil a consulta dos dados que pertençam a apenas uma das
relações. Por exemplo, considerando uma ontologia com a classe Pessoa, esta classe pode ser
relacionada consigo mesmo através de predicados tais como: temAscendente,
temDescendente, temIrmão, entre outros. Assim, torna-se mais natural realizar
interrogações em SPARQL do tipo: quais os irmãos da Alice? Numa base de dados relacional,
para realizar esta consulta, é necessária a utilização de uma junção23, referindo explicitamente
a chave primária da tabela Pessoa e a chave estrangeira que refere a relação de irmão.
Inferência: a utilização do OWL para descrever ontologias permite a definição de conceitos
através de condições necessárias e suficientes. Em sistemas onde o estado dos dados varie ao
longo do tempo, as conclusões sobre as instâncias da ontologia variam dinamicamente de
acordo com as alterações introduzidas. Este tipo de inferência não é possível num sistema de
informação relacional, uma vez que não é possível definir conceitos com base em condições
necessárias e suficientes.
Adaptabilidade: as tecnologias da Web Semântica permitem que um sistema de informação
semântico acompanhe, sem grandes penalizações, as evoluções do conhecimento humano. Isto
é suportado pela facilidade em criar alterações em ontologias através da simples manipulação
de afirmações. Este facto evita processos de migração de dados, como acontece nos sistemas
de bases de dados relacionais. Adicionalmente, recorrendo a nós anónimos, podem ser
23 Termo em inglês é inner-join.
45
realizadas afirmações nas quais o sujeito ou o objecto é ainda desconhecido, podendo no futuro
serem definidos esses nós de acordo com a descoberta de novo conhecimento.
Integração do conhecimento: um dos principais problemas relacionado com a evolução do
conhecimento humano é a segregação. Esta segregação é ainda constatável na actualidade,
uma vez que existem múltiplas disciplinas de estudo. As tecnologias subjacentes à Web
Semântica permitem a obtenção de respostas a questões que atravessem mais que um domínio
do conhecimento. Isto não seria possível sem Linked Data24 e ontologias representadas numa
linguagem que seja comum a todos os sistemas de informação semânticos, como é o caso do
OWL. Adicionalmente, como as ontologias são grafos, é possível a integração de várias
ontologias através da junção dos respectivos grafos. Numa base de dados relacional, a junção
de dois esquemas relacionais que tenham colisão de conceitos é bastante problemática. As
tecnologias da Web Semântica resolvem este problema através do uso dos namespaces,
permitindo que a integração de ontologias seja realizada de forma simples, bastando apenas a
indicação, através de afirmações, de quais os conceitos das ontologias que são considerados
equivalentes.
Colaboração em comunidade: embora este aspecto não esteja directamente relacionado
com a Web Semântica, um dos principais motivadores para a colaboração de comunidades em
diversos projectos tem sido a existência da Web. O trabalho destas comunidades é geralmente
disponibilizado ao abrigo de licenças como a General Public Licence (GLP) [39]. Isto permite o
aparecimento de ferramentas sem custos para o utilizador final e cujo código fonte se encontra
disponível. A disponibilização do código fonte permite que ferramentas existentes sejam
estendidas e melhoradas, sendo estas alterações disponibilizadas de novo ao público em geral.
Existem várias extensões para Protégé e Sesame, que demonstram valiosos contributos por
comunidades externas a estes projectos.
4.2.2 Vantagens da Implementação
Esta implementação oferece um conjunto de vantagens para futuros projectos que recorram à
.NET Framework ou ao Excel. Algumas destas vantagens são apresentadas de seguida.
Processo de engenharia reversa: não é usual existirem projectos que utilizem SPARQL para
a obtenção de uma ou mais ontologias armazenadas num repositório de triplos. À data de
publicação deste relatório, não foi encontrado outro projecto no universo de soluções para a
Web Semântica que o fizesse. Este processo poderá ser relevante para projectos onde é
24 Dados no formato RDF que se encontrem disponíveis na Web.
46
necessária a criação de dados de acordo com ontologias armazenadas em triplestores. Algumas
das interrogações utilizadas para a obtenção da ontologia são complexas, pelo que, projectos
que as reutilizem poderão ter como resultado directo a diminuição do tempo dispendido no
desenvolvimento. Este processo abre caminho para a criação dinâmica de interfaces com o
utilizador a partir de repositórios de triplos remotos. A solução implementada utiliza parte deste
benefício na criação e formatação de folhas de cálculo.
Independência da versão do Excel: apesar de parte do código desenvolvido ser dependente
do Excel, existem garantias de independência da versão do Excel ao recorrer à .NET Framework
em detrimento de outras tecnologias de extensibilidade. Desta forma, através da utilização de
um modelo de objectos baseado em interfaces, o código produzido neste projecto pode ser
reutilizado em futuras versões do Excel.
Robustez da solução: a implementação foi verificada através de um conjunto de testes
unitários, testes manuais e testes de carga. Uma vez que a solução recorre ao Excel como
interface gráfica, são fundamentais os testes manuais para validar grande parte da
implementação. Dos testes de carga realizados, constatou-se que a solução suporta ontologias
com duas dezenas de milhar de classes. O Excel é o principal factor condicionante, devido à
latência existente nas operações de manipulação de livros com a quantidade de folhas de
cálculo já referida. Assim, o código produzido poderá tirar partido de eventuais melhorias na
manipulação de livros com grandes quantidades de folhas de cálculo em futuras versões do
Excel.
4.2.3 Limitações da Web Semântica
A expressividade adicional imposta pelo paradigma semântico, em particular na construção de
ontologias, pode tornar-se um obstáculo quando os modelos a representar têm
maioritariamente relações de composição. Nestes casos o mesmo predicado ou propriedade não
pode ser reutilizado para relacionar todos os conceitos para os quais a relação de composição é
aplicável, isto porque em OWL a utilização de vários domínios (domains) e intervalos (ranges)
em propriedades têm semântica de intersecção. Assim, é difícil criar ontologias que não sejam
taxonómicas e que tenham várias relações de composição. Para tal é necessário utilizar todos
os sinónimos conhecidos para descrever relações do tipo: A compostoPor B.
Para a consulta a uma determinada ontologia, geralmente realizadas através de SPARQL, o
utilizador mesmo que conheça bem o domínio de conhecimento, pode não conhecer os
predicados que foram utilizados na criação da ontologia. Por exemplo, considerando uma
ontologia que contenha a classe Escola e esta classe tenha a propriedade Nome, é espectável
47
que o predicado utilizado para ligar a Escola e Nome seja: temNome. No entanto, pode ter
sido utilizado outro predicado, por exemplo, nomeDoEstabelecimento. Isto torna mais difícil
a criação de interrogações SPARQL do que interrogações SQL, quando o objectivo é apenas
consultar propriedades de conceitos. Na Figura 31 é ilustrada esta diferença, sendo ns o
hipotético namespace da ontologia.
SQL SPARQL
select Nome from Escola select ?Nome where {
?Escola a ns:Escola ;
ns:nomeDoEstabelecimento ?Nome
}
Figura 31 – Consulta de propriedades em SQL e SPARQL
O exemplo da consulta SPARQL, apresentado na Figura 31, é adaptado de um dos exemplos de
consultas [40] aos dados governamentais disponibilizados no Reino Unido [41].
Existem alguns casos de modelação que podem originar conclusões ou resultados absurdos na
concepção de ontologias, noutros casos ainda, por excesso de flexibilidade, são criadas
dificuldades na concepção de interfaces com o utilizador que validem os dados de acordo com
ontologias. Deveria ser realizado um trabalho exaustivo para a identificação destes casos,
trazendo benefícios para a comunidade que desenvolve trabalho na área da Web Semântica.
São de seguida apresentados alguns casos problemáticos, identificados ao longo da realização
deste projecto.
Propriedades transitivas e funcionais: uma propriedade não deve ser definida como
transitiva e funcional ou funcional inversa25. A combinação destas características é permitida na
Web Semântica, mas não faz sentido.
Alice Bruno CarlostemAscendente temAscendente
Figura 32 – Propriedade transitiva em OWL
Na Figura 32, está representada a propriedade transitiva temAscendente, através da qual é
possível concluir que Carlos é ascendente de Alice, mesmo não estando estes últimos
directamente relacionados. No entanto, ao ser adicionada a esta propriedade a característica de
25 Termo original é inverse functional.
48
funcional, leva a que o motor de inferência conclua que Bruno e Carlos são a mesma pessoa, o
que não é verdadeiro. Casos como este, podem surgir porque as ferramentas de modelação
não advertem ou impedem esta combinação.
Definição de propriedades sem domain ou com domain owl:Thing: por omissão uma
propriedade sem domain é aplicada a todas as classes da ontologia, seguindo a regra que todas
as classes definidas na ontologia são subclasses da classe owl:Thing. No entanto, constata-se
que alguns destes axiomas originam resultados despropositados, nomeadamente na ontologia
dos vinhos disponibilizada pela própria W3C a propriedade locatedIn é definida para todas as
classes da ontologia através da atribuição da mesma à classe owl:Thing, como exemplificado
na Listagem 11.
<owl:ObjectProperty rdf:ID="locatedIn">
<rdf:type rdf:resource="&owl;TransitiveProperty" />
<rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
Listagem 11 – Excerto da ontologia dos vinhos da W3C
Esta propriedade é assim aplicada a classes tais como wineTaste, o que não faz sentido pois
o sabor do vinho não está localizado numa região vinícola. A liberdade de poder associar uma
propriedade ao universo de coisas existentes numa ontologia, é pouco razoável principalmente
se considerarmos que o futuro da Web Semântica pretende que várias ontologias sejam
partilhadas e usadas em simultâneo. Então, permitir a definição de uma propriedade como
universal, é permitir que alguém determine propriedades aplicáveis a todos os domínios do
conhecimento, podendo originar inconsistências.
Definição de propriedades sem range: propriedades sem range impedem a criação
adequada de interfaces, com o utilizador. Não é possível determinar que tipo de dados devem
ser introduzidos para determinadas propriedades, embora a propriedade tenha uma semântica
que torne evidente ao utilizador qual o tipo de dados a introduzir. Na Listagem 12 é
apresentado um excerto de uma ontologia produzida pela Lehigh University.
<owl:DatatypeProperty rdf:ID="age">
<rdfs:label>is age</rdfs:label>
<rdfs:domain rdf:resource="#Person" />
</owl:DatatypeProperty>
Listagem 12 – Exemplo de propriedade sem range
49
Embora seja evidente para um humano que a propriedade idade deve ser um inteiro positivo,
numa interface gráfica a falta desta informação de forma explícita pode dar origem a erros na
introdução dos dados, tendo consequências sérias posteriormente. Por exemplo, se existirem
valores para idades introduzidos por extenso em vez de numericamente, não será possível
determinar indicadores tais como média de idades de uma população. A W3C já está atenta a
este problema, que foi abordado num working draft do OWL 2 [42], resultado do contributo da
comunidade de utilizadores do Protégé.
Garantia de cardinalidade: como não existe garantia de nomes únicos na Web, através da
No Unique Names Assumption, não é possível que restrições de cardinalidade sejam
correctamente asseguradas. Sempre que um recurso for identificado por dois ou mais URIs
distintos, qualquer restrição de cardinalidade será incoerente, pois o mesmo recurso pode
aparecer múltiplas vezes na relação e impedir a participação de outros recursos na relação. Este
cenário é possível quando um recurso está disponível em vários locais distintos na Web, não
havendo controlo sobre a diversidade de URIs que podem identificar o mesmo. Este problema
irá certamente ocorrer à escala global, devido ao âmbito de utilização da Web Semântica.
Aplicação de condição necessária e suficiente: algumas classes podem ser definidas
através das condições necessárias e suficientes permitindo inferência em ambos os sentidos da
relação. Caso seja definida uma condição necessária e suficiente através da primitiva
owl:allValuesFrom a implicação não irá funcionar num dos sentidos pelo facto desta última
não constituir uma restrição existencial.
<owl:Class rdf:ID="Vegetariano">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="#come" />
<owl:allValuesFrom rdf:resource="#Vegetais" />
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
<Alice>
<rdf:type rdf:resource="#Vegetariano"
</Alice>
Listagem 13 – Caso excepcional em condição necessária e suficiente
Do exemplo apresentado na Listagem 13, a definição directa de Alice como vegetariana não
permitirá inferir que Alice come vegetais, mesmo tendo sido utilizada uma construção que é
considerada necessária e suficiente.
50
As ferramentas de modelação no contexto da Engenharia do Conhecimento são fundamentais e
devem facilitar a consulta visual dos modelos em concepção. Constatou-se que é ainda difícil a
consulta de ontologias em ferramentas como o Protégé por não suportar a visualização de
propriedades das classes, nem as relações entre classes para além da relação taxonómica. Isto
é particularmente útil para validar que dados são aceites como propriedades das classes. A
Figura 33 ilustra como é representada, por omissão, uma ontologia no Protégé.
Figura 33 – Visualização de ontologia em Protégé através do OWLViz
Alguns plug-ins existentes para o Protégé podem abordar algumas das suas limitações de
representação gráfica da ontologia, como a consulta de relações entre conceitos nas ontologias
que não sejam apenas taxonómicas. No entanto, ainda não possibilita a consulta de
propriedades literais. De um modo geral, ferramentas como o Protégé ainda não oferecem o
mesmo nível de usabilidade na criação e consulta de ontologias como ferramentas de
modelação existentes para outras linguagens, como o UML. A Figura 34 ilustra um contributo
recente para a visualização de ontologias no Protége.
51
Figura 34 - Visualização de ontologia em Protégé através do OntoGraf
4.2.4 Limitações do Excel
4.2.4.1 Especificações técnicas
A quantidade de dados ou quantidade de propriedades suportadas na solução depende
principalmente da versão do Excel. A Figura 35 detalha as características na especificação do
Excel que têm impacto neste projecto.
Excel 2003 Excel 2007
Colunas por folha 256 16.384
Linhas por folha 65.536 1.048.576
Dimensão da célula 32.767 32.767
Figura 35 – Especificações principais do Excel por versão
As colunas por folha determinam a quantidade máxima de propriedades em cada classe da
ontologia. A quantidade de linhas por folha determina a quantidade máxima de instâncias por
classe que o utilizador pode introduzir. A dimensão da célula determina a quantidade máxima
de caracteres possíveis nas propriedades das classes. Considerando propriedades que refiram
52
outros recursos e sem restrição de cardinalidade, a quantidade máxima de instâncias referidas
na propriedade será o resultado da expressão ilustrada na Figura 36.
𝐷𝑖𝑚𝑒𝑛𝑠ã𝑜 𝑑𝑎 𝑐é𝑙𝑢𝑙𝑎
𝑡𝑎𝑚𝑎𝑛ℎ𝑜(𝑖𝑑𝑒𝑛𝑡𝑖𝑓𝑖𝑐𝑎𝑑𝑜𝑟)
Figura 36 – Expressão da quantidade máxima de referências por célula
Na Figura 36, a variável 𝑖𝑑𝑒𝑛𝑡𝑖𝑓𝑖𝑐𝑎𝑑𝑜𝑟 representa o URI do recurso. Assim, considerando que
o identificador de instâncias de uma classe tem 4 caracteres de tamanho, uma propriedade que
refira outra classe e que não tenha restrições de cardinalidade poderá referir no máximo 8191
instâncias.
4.2.4.2 Recolha de referências managed
Na versão 2007 do Excel foi introduzido um novo conceito de barra de ferramentas designada
de Ribbon. Isto facilita o desenvolvimento, pois é possível utilizar em tempo de desenho, um
editor visual deste novo conceito. Ao usar este editor é garantida a existência de uma
referência raiz managed para o Ribbon em tempo de execução e consequentemente para todos
os controlos contidos no mesmo. Isto inviabiliza a recolha pelo Garbage Collector (GC) das
referências para os controlos.
Um editor equivalente não existe na versão 2003, pelo que toda a criação de opções de menu,
barras de ferramentas e comandos nelas contidos terão que ser criados programaticamente. Se
não forem tomadas as medidas adequadas haverá recolha das referências managed para os
objectos nativos do Excel e consequentemente estes não terão qualquer tratamento de eventos
associado. Para que os controlos continuem a ter representação managed cabe ao programador
criar referências raiz para os mesmos. Como exemplo, caso existam opções de menu
implementadas na versão 2003 do Excel que não disponham de referências raiz em ambiente
managed, o utilizador verá as opções no menu aplicacional durante todo o tempo de vida da
aplicação. No entanto, a utilização destas opções não irá produzir qualquer resultado.
4.2.4.3 Validação
Os valores existentes nas células de uma folha de cálculo podem ser formatados, mas o
formato destes não determina o seu tipo. Mais precisamente, não é por atribuir o formato
numérico a uma determinada célula, que passa a existir garantia que os valores da célula são
53
do tipo numérico. Por conseguinte, é possível a existência de valores alfanuméricos em células
cujo âmbito de utilização seja para valores numéricos e se encontrem formatadas para valores
numéricos.
Uma outra possibilidade de validação de valores encontra-se no facto do Excel permitir listas de
validação. No entanto, verificou-se que estas listas de validação suportam no máximo 256
caracteres, sendo a lista uma string de valores separada por ponto e vírgula. A falta de suporte
para listas como mais de 256 caracteres só é evidente quando se grava um livro Excel onde
haja pelo menos uma célula com uma lista nas condições já referidas. Quando se volta a abrir o
livro Excel é lançada uma excepção de alerta ao utilizador, referindo que os valores da lista de
validação não puderam ser carregados.
Adicionalmente, não há forma de utilizar funcionalidades internas ao Excel para evitar que o
utilizador deixe uma célula vazia, impedindo a validação imediata de uma restrição existencial.
Desta forma, a implementação tem que assegurar a validação de restrições existenciais num
único evento global de utilização, ocorrendo imediatamente antes do upload dos dados para o
triplestore.
O Excel não é a ferramenta ideal para validação de tipos de dados, permitindo apenas
validações elementares de valores. Para validações mais elaboradas, cabe ao programador
desenvolver rotinas de validação. As validações de tipos são as mais penosas devido à
multiplicidade de tipos existentes e ao facto de alguns dos tipos em XSD não terem
correspondência directa nos tipos da .NET Framework. Sabendo que os valores existentes nas
células são todos do tipo string, torna-se mais difícil esta validação devido à existência de
notações que embora válidas, não sejam passíveis de conversão directa, como acontece com a
notação científica26.
4.2.4.4 Desempenho
O modelo de objectos do Excel não permite a execução em paralelo de tarefas cíclicas, como
acontece durante a criação das folhas de cálculo de um novo livro. Embora o modelo de
objectos vise a reutilização de código nas soluções VSTO para versões futuras do Excel, através
do uso de interfaces, a representação directa em interface gráfica de alguns objectos, impede a
utilização de algoritmos de execução paralela. O ideal seria o modelo de objectos permitir a
criação em memória de folhas de cálculo e posterior representação visual das mesmas,
potenciando a criação em paralelo.
26 Por exemplo: 1,23E+08
55
5 Conclusões e trabalho futuro
5.1 Conclusões
Este projecto demonstra que é possível adoptar o Excel enquanto interface com o utilizador,
num sistema de informação semântico. A implementação realizada serve de prova de conceito
para outros projectos, no âmbito da Web Semântica, que visem a criação de interfaces
dinamicamente com base em ontologias.
A solução implementada será adoptada por um conjunto de instituições de investigação,
nacionais e internacionais, nas áreas das Ciências da Vida.
Tanto quanto é do conhecimento do autor, este projecto é único no universo de
implementações para a Web Semântica, devido ao facto de construir parte da interface gráfica
a partir de ontologias, recorrendo a um endpoint SPARQL. Para além disto, a implementação
permite a introdução de dados de acordo com ontologias, o que não é típico nas aplicações já
conhecidas para a Web Semântica. O ciclo de vida dos dados num sistema de informação
começa necessariamente pela criação dos mesmos. Havendo ontologias criadas para
representar determinado domínio de conhecimento, então faz sentido tirar partido dessas
ontologias para a criação de dados nesse domínio. Este aspecto não é abordado na maioria da
bibliografia e referências utilizadas para a realização deste projecto. A maioria dos projectos
desenvolvidos para a Web Semântica dispõe de interfaces para a consulta de dados. Assim, os
exemplos citados na bibliográfica deixam sempre uma dúvida subjacente: como é que os dados
surgem nos sistemas de informação semânticos em primeiro lugar? Parece evidente, após o
estudo de algumas referências [43], que a maioria dos sistemas de informação que dão lugar
ao aparecimento de Linked Data e consequentemente vão dando forma à Web Semântica, são
sistemas de informação relacionais cujos dados são exportados para RDF e disponibilizados na
Web. Este aspecto torna mais relevante ainda, a criação de interfaces para o carregamento de
dados de acordo com ontologias, pois permitirá que instituições recém-criadas reduzam os
custos iniciais na implementação dos seus sistemas de informação semânticos, quando estas
não possuam dados como património institucional.
Este projecto permitiu que o autor tomasse conhecimento de um paradigma que embora não
seja recente, está relacionado com sistemas de informação, sendo esta uma temática que o
autor considera relevante. É importante ter a noção que o conhecimento será certamente o
património mais valioso da humanidade. Sem uma sistematização do conhecimento, não haverá
progresso na descoberta de soluções para os problemas da nossa sociedade. Esta
sistematização passa necessariamente por redução da dispersão, segregação e desorganização
do conhecimento, sendo esta uma responsabilidade de todos e não apenas dos informáticos.
Este projecto permitiu consolidar ainda mais estas convicções no autor, demonstrando como a
56
participação directa na área das ciências da informação e computação são fundamentais para
uma melhor e mais fundada abordagem aos problemas da representação do conhecimento.
5.2 Desafios e dificuldades
Para a realização deste projecto foi necessário o estudo e análise das tecnologias relacionadas
com a Web Semântica, tendo estas actividades representado a fase mais longa do projecto. As
recomendações W3C não são a fonte mais indicada para iniciar o estudo a problemas
relacionados com semântica e representação de conhecimento, sendo os seus conteúdos
ambíguos em alguns exemplos. Isto tornou mais difícil a tarefa de compreender a aplicabilidade
das primitivas da linguagem OWL, pelo que foi necessária a identificação de bibliografia de
suporte. As disciplinas de sistemas de informação, existentes no programa curricular da
licenciatura, permitem a criação de analogias entre o paradigma semântico e relacional, no
entanto, foi considerável o esforço necessário para a aprendizagem das tecnologias e
linguagens da Web Semântica usadas neste projecto.
A utilização do Excel como interface gráfica também teve impacto no ritmo de desenvolvimento
da solução. Foi necessária a aprendizagem do modelo de objectos do Excel e lidar com um
conjunto de métodos cuja sintaxe de utilização não era simples. Os actuais ambientes de
desenvolvimento integrado, como é o caso do Visual Studio, facilitam o processo de
desenvolvimento através de mecanismos como o IntelliSense. Como o modelo de objectos de
aplicações Office recorre com frequência a métodos como parâmetros opcionais, o IntelliSense
não tem muita utilidade, pois os métodos aceitam maioritariamente argumentos do tipo
Object, sendo necessária a consulta de conteúdos especializados27 para progredir no trabalho.
Outro factor condicionante, foi a escassez de ferramentas concebidas com a .NET Framework
para a Web Semântica. As ferramentas analisadas28 revelaram ser inadequadas para este
projecto. Desta forma, não foi possível a adopção de ferramentas que abreviassem toda a
análise necessária para a definição das regras de mapeamento.
5.3 Trabalho futuro
Em Outubro de 2009 a W3C publicou a recomendação para o OWL 2.0, tendo sido
disponibilizada a primeira versão do Protégé, com suporte total para esta nova recomendação,
apenas em meados de Junho de 2010. Como trabalho futuro deverá ser considerada uma
27 Como é o caso da Excel 2007 Developer Reference.
28 ROWLEX (http://rowlex.nc3a.nato.int/) e SemWeb.NET (http://razor.occams.info/code/semweb/).
57
análise ao OWL 2.0 e eventual implementação de suporte às novas primitivas da linguagem,
sendo recomendada a espera por bibliografia de suporte.
Sabendo que o Excel é uma ferramenta propensa à produção de gráficos, é possível projectar
um módulo de descarga de dados do triplestore a partir das consultas mais ocorrentes,
permitindo que os utilizadores criem os seus gráficos de análise. Isto terá a vantagem dos
utilizadores recorrerem aos dados do triplestore para produzir gráficos, em vez dos dados
existentes nas folhas de cálculo usadas para carregamento. Outra vantagem reside no facto dos
utilizadores dispensarem a aprendizagem de uma nova ferramenta para a produção dos seus
gráficos.
É também possível a implementação de uma interface Web, similar a uma folha de cálculo, que
permita o carregamento de dados para o triplestore. Caso seja utilizada uma ferramenta como
o Google Web Toolkit [44], será também possível a produção de gráficos sobre os dados do
triplestore, permitindo que o utilizador usufrua de uma interface rica e disponibilizando acesso
aos dados a partir de qualquer computador com acesso à Web.
59
Referências
[1] World Wide Web Consortium (W3C). Semantic Web - W3C. [Online]. http://www.w3.org/standards/semanticweb/
[2] TED. (2009) Tim Berners-Lee on the next Web. [Online].
http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html
[3] World Wide Web Consortium (W3C). OWL Web Ontology Language Reference. [Online].
http://www.w3.org/TR/owl-ref/
[4] Microsoft. Excel. [Online]. http://office.microsoft.com/en-us/excel/default.aspx
[5] Microsoft. .NET Framework. [Online]. http://www.microsoft.com/NET/
[6] Microsoft. Office Development with Visual Studio. [Online]. http://msdn.microsoft.com/en-us/vsto/default.aspx
[7] Microsoft. Primary Interop Assemblies (PIAs). [Online]. http://msdn.microsoft.com/en-us/library/aa302338.aspx
[8] Unicode Consortium. Unicode Standard. [Online]. http://www.unicode.org/standard/standard.html
[9] World Wide Web Consortium (W3C). Extensible Markup Language (XML) 1.1. [Online].
http://www.w3.org/TR/2006/REC-xml11-20060816/
[10] World Wide Web Consortium (W3C). RDF - Semantic Web Standards. [Online].
http://www.w3.org/RDF/
[11] Oracle. Java. [Online]. http://www.oracle.com/technetwork/java/index.html
[12] R. T. Fielding. (2000) Representational State Transfer (REST). [Online].
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
[13] World Wide Web Consortium (W3C). Notation3 (N3) A readable RDF syntax. [Online].
http://www.w3.org/DesignIssues/Notation3.html
[14] World Wide Web Consortium (W3C). Turtle - Terse RDF Triple Language. [Online].
http://www.w3.org/TeamSubmission/turtle/
[15] World Wide Web Consortium (W3C). RDF/XML Syntax Specification. [Online].
http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/
[16] Object Management Group (OMG). Unified Modeling Language (UML). [Online]. http://www.uml.org/
[17] Microsoft. The C# Language. [Online]. http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx
[18] Stanford Center for Biomedical Informatics Research. The Protégé Ontology Editor and
Knowledge Acquisition System. [Online]. http://protege.stanford.edu/
[19] World Wide Web Consortium (W3C). SPARQL Query Language for RDF. [Online].
http://www.w3.org/TR/rdf-sparql-query/
[20] SYSTAP, LLC. Bigdata. [Online]. http://www.systap.com/bigdata.htm
[21] D. Tsarkov. factplusplus. [Online]. http://code.google.com/p/factplusplus/
60
[22] Clark & Parsia. Pellet: The Open Source OWL Reasoner. [Online].
http://clarkparsia.com/pellet
[23] Ontotext. OWLIM - OWL Semantic Repository. [Online].
http://www.ontotext.com/owlim/index.html
[24] JSON.org. JSON. [Online]. http://www.json.org/
[25] Microsoft. COM: Component Object Model Technologies. [Online]. http://www.microsoft.com/com/default.mspx
[26] Microsoft. Office Online. [Online]. http://office.microsoft.com/en-us/default.aspx
[27] Microsoft. Dictionary Class. [Online]. http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
[28] openRDF.org. openRDF.org. [Online]. http://www.openrdf.org/
[29] World Wide Web Consortium (W3C). HTTP - Hypertext Transfer Protocol Overview. [Online]. http://www.w3.org/Protocols/
[30] World Wide Web Consortium (W3C). SPARQL Query Results XML Format. [Online].
http://www.w3.org/TR/rdf-sparql-XMLres/
[31] World Wide Web Consortium (W3C). Wine Ontology. [Online]. http://www.w3.org/TR/owl-
guide/wine.rdf
[32] World Wide Web Consortium (W3C). Serializing SPARQL Query Results in JSON. [Online].
http://www.w3.org/TR/rdf-sparql-json-res/
[33] Microsoft. Single-Threaded Apartments (COM). [Online]. http://msdn.microsoft.com/en-
us/library/ms680112%28VS.85%29.aspx
[34] Microsoft. Delegate Class. [Online]. http://msdn.microsoft.com/en-us/library/system.delegate.aspx
[35] Microsoft. Code Access Security. [Online]. http://msdn.microsoft.com/en-us/library/930b76w0%28VS.71%29.aspx
[36] Microsoft. ClickOnce Deployment. [Online]. http://msdn.microsoft.com/en-
us/library/t71a733d%28VS.80%29.aspx
[37] Microsoft. Configuring a Computer to Develop Office Solutions. [Online].
http://msdn.microsoft.com/en-us/library/bb398242.aspx
[38] Proxmox. Proxmox VE. [Online]. http://pve.proxmox.com/wiki/Main_Page
[39] GNU's Not Unix. The GNU General Public Licence. [Online]. http://www.gnu.org/licenses/gpl.html
[40] n² community blog. n². [Online]. http://blogs.talis.com/n2/archives/818
[41] Her Majesty's Government. Linked Data. [Online]. http://data.gov.uk/sparql
[42] World Wide Web Consortium (W3C). OWL 2 Web Ontology Language: New Features and
Rationale. [Online]. http://www.w3.org/TR/2008/WD-owl2-new-features-20081202/#Use_Case_.2312_.E2.80.93_Prot.C3.A9g.C3.A9_report_on_the_experiences_of_
OWL_users_.5BTool.5D
[43] E. Hyvönen, M. Salminen, M. Junnila, and S. Kettula. A Content Creation Process for the Semantic Web. [Online].
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.2621&rep=rep1&type=pdf
61
[44] Google. Google Web Toolkit. [Online]. http://code.google.com/webtoolkit/
[45] T. Segaran, C. Evans, and J. Taylor, Programming the Semantic Web. O'Reilly Media, 2009.
[46] L. Richardson and S. Ruby, RESTful Web Services. O'Reilly Media, 2007.
[47] M. C. Daconta, L. J. Obrst, and K. T. Smith, The Semantic Web: A Guide to the Future of XML, Web Services, and Knowledge Management. Wiley Publishing, Inc., 2003.
[48] J. Hebeler, M. Fisher, R. Blace, and A. Perez-Lopez, Semantic Web Programming. Wiley Publishing, Inc., 2009.