• Sonuç bulunamadı

Tendo então apresentado a arquitectura nas secções anteriores, descrevem-se agora muito resumidamente algumas tecnologias que serão utilizadas pelo protótipo para a implementação de algumas das explorações e componentes da arquitectura. As tecnologias são descritas apenas de forma introdutória pois não é este o objectivo da tese, e sim a prova do conceito, algo que as tecnologias apenas suportam.

4.3.1 RDF

O RDF, Resource Description Framework [112], é um standard W3C que permite a descrição de recursos com base em declarações. Em RDF, uma declaração, também referida por triplo ou triple to, é composta por 3 partes: Um recurso, uma propriedade e um valor (da propriedade). Utiliza-se também regularmente a nomenclatura sujeito, predicado e objecto.

Os recursos identificam objectos (no sentido conceptual) com recurso a

Uniform Resource Identifier (URI), as propriedades descrevem atributos do

recurso identificado pelo URI, e por fim, o valor corresponde ao valor atribuído à propriedade, que pode ser um valor literal ou um “apontador” para outro recurso, utilizando URI. Um documento RDF é então um conjunto de declarações RDF, podendo existir diversos formatos ou sintaxes para a sua definição, como RDF/XML [114] ou Notation3 (N3) [115].

Figura 4.3 - Exemplo da sintaxe RDF/XML [116]

Figura 4.4 - Exemplo da sintaxe N3 [116]

Apresentam-se exemplos desta notações na Figura 4.3 e Figura 4.4, sendo ambas utilizadas nos trabalhos do protótipo e referidas mais à frente. Refere-se também que, dada a construção por triplos, é possível apresentar estas declarações ou documentos como grafos de relações entre recursos, contendo atributos com valores literais, algo que de imediato estabelece um paralelo à lógica de construção do modelo.

4.3.2 RDF-Schema

O RDF Schema, ou RDFS [117], é igualmente uma recomendação W3C de uma linguagem utilizada para a construção ou definição de vocabulários RDF. Esta permite a definição de classes, subclasses e propriedades, de forma similar à noção de Objectos das linguagens de programação, permitindo a definição de hierarquias de classes, algo que também estabelece um paralelo à construção do modelo.

4.3.3 OWL

A Web Ontology Language, ou OWL [66], já referido anteriormente, é uma família de linguagens para a definição de ontologias, que foi desenhada para a utilização por aplicações que necessitem de processar informação, promovendo a interoperabilidade Web entre sistemas. Esta é descrita por formatos como RDF e

RDFS (e suas sintaxes possíveis), com a adição de conjunto de vocabulários, já tendo sido referida anteriormente no trabalho “Hyperkrep academic communities” [61] para a modelação do conhecimento CC2001 como uma ontologia.

A família OWL é composta por 3 sub-linguagens: OWL Lite, OWL DL e OWL Full [66]. As diferenças residem essencialmente nas capacidades de expressividade de alguns aspectos como cardinalidade, igualdade, etc., sendo apenas importante referir que o OWL Full não garante uma computação finita, pelo que se for necessário considerar noções de inferência, é recomendada a utilização de OWL DL.

Dada a sua utilização no trabalho acima referido, esta é também de especial importância no protótipo, pois cumpre com as necessidades de construção do modelo proposto.

4.3.4 O editor Protege

O Protégé [118] é uma ferramenta open source para a edição de ontologias e uma Framework para a modelação de conhecimento, desenvolvida pela Stanford

Center for Biomedical Informatics Research da Stanford University School of Medicine. Este permite a modelação de ontologias de várias formas, suportando

diversos formatos e sintaxes como RDF, RDFS e OWL. Uma das suas componentes, Protégé-OWL, está especificamente orientado à criação de ontologias em OWL, permitindo a definição de classes, propriedades, etc., bem como a utilização de motores de inferência (externos ou não) para descoberta de novo conhecimento em informação (instâncias) modelada pela ontologia. Apresenta-se um exemplo da interface da versão 3.4 na Figura 4.5, onde estão declaradas algumas classes OWL.

4.3.5 Repositórios RDF nativos (triplestore)

Com a utilização de RDF surgiu a necessidade de investigar brevemente quais as melhores formas de armazenamento desta informação, podendo existir suportada sobre base de dados relacionais [119] [120] ou suportada como base de dados especificamente orientadas para armazenamento e obtenção de RDF, referidos como repositórios RDF nativos ou triplestores [121]. Estes permite acesso à informação com base em linguagens de query (ex: SPARQL [122]), mas estão especificamente optimizados para o armazenamento de triplos na forma referida anteriormente. Fizeram-se algumas pesquisas sobre diversas implementações, referido especificamente os seguintes: Jena [123], Redland [124], Sesame [125].

4.3.6 Tecnologia específica para o protótipo

Além das tecnologias referidas anteriormente, que se focam mais especificamente nos aspectos de modelação e armazenamento, e portanto mais aplicadas à construção do modelo, faz sentido referir algumas tecnologias utilizadas especificamente no protótipo. Em concreto refere-se a tecnologia utilizada para a construção do protótipo como uma aplicação Web, a Framework RubyOnRails [126], e a biblioteca ActiveRDF [131] para lidar com RDF.

4.3.6.1 Ruby e RubyOnRails

Para construção do protótipo, que se pretendia ser apenas uma explicitação curta que desse suporte à prova de conceito do modelo, optou-se pela utilização de uma Framework open-source para o desenvolvimento de aplicações Web, focada na produtividade e obtenção muito rápida de resultados, o RubyOnRails [126] (também conhecido apenas por Raios).

Esta Framework foi criada em 2003 por David Heinemeier Hansson [127], tendo por base o seu trabalho na empresa 37signals [128], e é construída sobre a linguagem Ruby [129]. Esta Framework utiliza o padrão de arquitectura Model-

View-Controller (MVC) como base na construção de aplicações. Especificamente

no Raios, Models são objectos abstracções de conceitos na camada de dados (BD), Controllers são aquilo que responde tipicamente a pedidos URL do utilizador (gerados por pedidos via interface ou invocação directa) e que executa operações, e Views são as interfaces, tipicamente respostas dos controllers devolvidas ao browser. O Rails introduz também vários apoios às tarefas de desenvolvimento, como a noção de scaffolding (construção automática de modelos e interface com base na definição e informação dos repositórios de dados), servidores aplicacionais Web integrados (como WEBrick e Mongrel), um sistema de apoio à construção (Raie) e à actualização e descoberta de componentes e plugins (Gems). O Rails faz uso intensivo de bibliotecas de

Javascript para apoio à construção das interfaces e orienta-se a uma construção

4.3.6.2 ActiveRDF

O ActiveRDF [131] [132] é uma biblioteca desenvolvida na linguagem Ruby, quer permite aceder a dados RDF. Pode ser utilizada como uma “camada de dados” no RubyOnRails, facilitando a criação de aplicações Web que necessitem de lidar com RDF. Essencialmente disponibiliza uma forma de acesso programático aos modelos RDF (recursos, classes, propriedades, etc.), sem necessitar de queries e criando uma abstracção do repositório de informação. Esta pode ser utilizado com vários tipos de triplestores (Jena, Sesame, etc.) ou sobre base de dados relacionais (ex: SQLite3 [133]).