1) O documento discute a Web Semântica, incluindo seus conceitos, tecnologias e aplicações. 2) A Web Semântica visa dar significado às informações na web para que computadores possam processá-las de forma autônoma. 3) Isso é feito através de ontologias e linguagens como RDF, RDFS e OWL que estruturam os dados e seus relacionamentos semânticos.
Microformats e Web Semântica, transformando seu site para web 3.0 - Road Show...
Web Semântica: Conceitos e Aplicações
1. Web Semântica: Conceitos, Tecnologias e Aplicações
Paulo Vitor Antonini Orlandin
paulovitor_e@hotmail.com
Resumo
Com o crescente número de usuários da Internet, consequentemente o número de
informações disponíveis na rede também cresce. Esse crescimento gera a
necessidade de melhoria no sistema de busca de uma informação especifica, já que
o fluxo de dados está cada vez maior. Uma das soluções para este problema é a
Web Semântica, que propõe a aplicação de semântica ao conteúdo disponível na
Internet, fazendo com que a máquina auxilie o homem, de forma autônoma, na
tomada de decisões. Este trabalho se propõe a demonstrar a tecnologia básica da
Web Semântica, seus problemas e suas aplicações práticas.
Palavras chave: Web Semântica. Ontologia. RDF. RDFS. OWL. Semantic Web.
1. Introdução
Com o crescente número de usuários da internet, consequentemente o
numero de informações disponíveis na rede também cresce, dificultando muito
encontrar uma informação específica. Uma possível solução para este problema é a
Web Semântica, que propõe a aplicação de semântica ao conteúdo disponível na
internet.
A Web atual foi projetada para ser entendida apenas pelos usuários, já com a
Web Semântica as informações são compreendias pelas máquinas, através de
agentes computacionais, que tem a capacidade de processar informações
entendendo seu significado, auxiliando assim o usuário em suas decisões.
A Web Semântica é um extensão da Web atual, na qual é dada a
informação um significado bem definido, permitindo que
computadores e pessoas trabalhem em cooperação.(BERNERS-
LEE; HENDLER; LASSILA, 2001).
Também será possível associar informações entre coisas que a princípio
poderiam não estar relacionadas. Para isso a informação deve estar estruturada
1
2. (dados e metadados) e possuir conjuntos de regras de inferência para que a
máquina seja capaz de compreender as informações. As regras de inferência são
especificadas através de ontologias, que permitem representar a semântica dos
dados.
Berners-Lee cita um exemplo do que a Web Semântica é capaz de fazer.
Neste exemplo um usuário pede ao computador que agende uma consulta médica
com um ortopedista que faça parte do seu plano de saúde e que de preferência o
consultório seja perto de sua casa. O computador então navega pela rede e
encontra algumas opções. De uma maneira automática e inteligente, ele deve
verificar se a agenda do ortopedista e comparar com a do usuário, oferecendo assim
opções de horários. O usuário apenas escolhe o horário que lhe agrada mais.
Segundo Dziekaniak e Kirinus (2004), a Web Semântica proporciona novas
possibilidades para gestão do conhecimento como pesquisas inteligentes ao invés
de pesquisas utilizando palavras-chave.
Para viabilizar todas essas mudanças de forma gradativa reaproveitando a
arquitetura existente da Internet, Tim Berners Lee propôs um modelo em camadas.
A ideia principal deste modelo é de ao invés de propor uma nova arquitetura e por
consequência reestruturar a Internet, construir por cima do que já existe. A Figura 1
representa estas camadas.
Figura 1. Arquitetura proposta por Tim Berners Lee. Adaptado de Breitman (2005)
2
3. O primeiro passo para a aplicação de semântica a uma informação é a
criação de uma ontologia. Para Berners-Lee, Hendler e Lassila (2001), uma
ontologia para Web Semântica é composta de uma taxonomia e um conjunto de
regras de inferência. “Taxonomia é uma classificação de entidades de informação de
uma hierarquia, de acordo com relacionamentos que estabelecem com entidades do
mundo real que representam” (DACONTA apud BREITMAN,2005). Em outras
palavras, uma taxonomia tem como objetivo classificar informações em uma
hierarquia (arvore) utilizando o relacionamento pai-filho (BREITMAN, 2005). A Figura
2 é um exemplo de taxonomia utilizada para classificação de humanos.
Figura 2. Exemplo de taxonomia. Adaptado de Breitman (2005)
Por meio das regras de inferência é possível expressar associações. Por
exemplo, se um código de bairro estiver associado a uma cidade, então as casas
que estiverem utilizando este código do bairro, automaticamente estão associadas a
esta cidade.
Para que as máquinas possam acessar e processar as informações
automaticamente é necessário representá-la utilizando alguma tecnologia. O RDF e
RDF-Schema são a base da Web Semântica. Posteriormente algumas linguagens
para ontologias baseadas em extensões RDFS foram criadas. São elas SHOE, Oil,
DAML, DAML+Oil e OWL.
3
4. 2. Metadados
Podemos definir metadados como sendo dados sobre dados. São utilizados
para documentar e organizar de forma estruturada e padronizada as informações de
documentos objetivando melhorar a busca e recuperação de dados na Web. Deve
possuir elementos de descrição dos dados. Possui blocos de informações que
devem possuir, por exemplo, autor, titulo, data de publicação, etc. e em cada campo
possuir informações como: nome do campo, tipo de dados, formato, etc.
Com a necessidade de uma semântica para descrever recursos
disponibilizados na Internet foi criado o padrão de metadados Dublin Core. É o
padrão recomendado pela W3C devido a sua simplicidade de utilização, pois não
exige conhecimento de especialistas no momento de descrever recursos. O Dublin
Core apresenta uma estrutura a partir de um conjunto de descritores simples e
genéricos que objetiva a descoberta e o gerenciamento de recursos na Web
(DZIEKANIAK, KIRINUS,2004).
3. Ontologias
Ontologias são maneiras formais e explicitas de representar conceitualizações
compartilhadas. Servem como base para garantir uma comunicação livre de
ambigüidades, viabilizando o compartilhamento e reuso deste conhecimento. É de
grande importância para a Web Semântica, pois proporciona a atribuição de
semântica as informações, possibilitando que máquinas interpretem os dados
(BREITMAN, 2005).
Segundo Gruber (1993) apud Breitman (2005), “Ontologia é uma
especificação formal e explicita de uma conceitualização compartilhada”.
Conceitualização representa um modelo abstrato de algum fenômeno que
identifica conceitos relevantes para o mesmo. Explicita significa que os elementos e
suas restrições estão definidos de forma clara. Formal significa que a ontologia pode
ser processada automaticamente. Compartilhada significa que uma ontologia deve
ser capaz de obter o conhecimento consensual. (BREITMAN, 2005).
Resumidamente uma ontologia tem o objetivo de prover descrições para os
seguintes tipos de conceitos:
• Classes ou objetos nos vários domínios de interesse.
4
5. • Propriedades ou atributos que esses objetos devem
possuir.
• Relacionamentos entre esses objetos.
A figura 3 demonstra uma ontologia para classificação de seres vivos. A
classe homem, por exemplo, é uma subclasse das classes carnívoro e mamífero,
que por sua vez é subclasse da classe animal que é subclasse da classe ser vivo.
Figura 3. Exemplo de uma Ontologia de seres vivos. Adaptado de Breitman (2005)
4. Resource Description Framework (RDF)
O RDF é um padrão estabelecido pela W3C com o intuito de representar
objetos e seus relacionamentos, fornecendo semântica, podendo ser representada
através de XML. Metadados que são representados em RDF permitem que estes
sejam manipulados por maquinas, pois atribuem significado aos recursos. RDF
provê interoperabilidade, mas não fornece mecanismos para declaração e definição
de propriedades e seus relacionamentos. Para isso foi formulado o RDF-Schema,
que será apresentado na sessão 5.
A estrutura básica do RDF possui três tipos de objetos fundamentais:
recursos, propriedades e frases. Recurso é o objeto que queremos descrever, que é
descrito através de uma expressão RDF. Cada recurso possui uma URI (Universal
Resource Identifier), utilizada para identificar o recurso. Propriedade é utilizada para
descrever recursos e os relacionamentos entre recursos. Salientando que um
recurso pode possuir duas ou mais propriedades diferentes (BREITMAN, 2005).
Podemos representar essas estruturas através de uma tripla que pode ser
representada como <recurso, propriedade, valor>. O exemplo João criou a página
5
6. http://www.faculdadescoc.com.br/rdf pode ser representado pela tripla <”João”,
“criador”, http://www.faculdadescoc.com.br/rdf>.
Podemos representar a tripla acima através de um grafo (Figura 4).
Representamos um recurso por uma elipse e um terminal por um retângulo. Os
arcos partem do recurso para o objeto e possui o nome da propriedade.
Figura 4. Representação de um grafo RDF. Adaptado de Breitman (2005)
A utilização de grafos é meramente ilustrativa, apenas utilizada para a
compreensão humana. Para que a informação seja processada por máquinas
devemos representá-la através de um documento RDF escrito utilizando uma sintaxe
XML (BREITMAN, 2005).
1. <rdf:RDF>
2. <rdf:Description about: http://www.faculdadescoc.com.br/rdf>
3. <x:criador>
4. João
5. </x:criador>
6. </rdf:Description>
7. </rdf:RDF>
Trecho de código 4.1. Exemplo de uma sentença representada em RDF
5. RDF-Schema (RDFS)
Com o intuito de suprir as limitações apresentadas pelo RDF foi criado o
RDFS. RDF não possibilita o desenvolvimento de classes e propriedades
particulares, pois possui um numero limitado de elementos predefinidos.
O RDFS é na verdade um framework que possibilita a descrição de classes e
propriedades, ou seja, uma linguagem para descrição de ontologias. A definição de
classe em um RDFS é similar a definição de classes no conceito de programação
orientada a objetos. Os recursos descritos no documento RDF que são associados a
uma classe tornam-se instancias ou subclasses da classe associada. Entende-se
por classe, como um tipo de recurso que queremos representar (BREITMAN, 2005).
6
7. Algumas classes são essenciais para um documento RDFS, são elas:
• rdfs:Resource – É a classe mãe de todos os recursos.
Todos os objetos são instancias dessa classe.
• rdfs:Class – É a classe que possui todas as classes.
Todas as novas classes derivam dela.
• rdfs:Literal – Possui todos os literais.
• rdfs:Property – É a classe de todas as propriedades. Toda
propriedade é uma instância dessa classe.
As principais classes utilizadas para definir relacionamentos são:
• rdfs:subClassof – Utilizada para definir um relacionamento
de herança entre duas classes.
• rdfs:subPropertyof – Utilizada para definir um
relacionamento de herança entre duas propriedades.
• rdfs:type – Relaciona um recurso a sua classe
transformando o recurso como instancia dessa classe, indicando a qual
classe este recurso pertence.
No trecho de código 5.1, é apresentado um exemplo da utilização da classe
subClassOf, onde a classe professor herda características da classe funcionário.
1. <?xml version=”1.0”?>
2. <rdf:RDF
3. xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
4. xmlns:rdfs=http://www.w3.org/2000/01/rdf-schema#
5. xml:base=”www.faculdadescoc.com.br/funcionarios”>
6. <rdfs:Class rdf:ID=”funcionario”/>
7. <rdfs:Class rdf:ID=”professor”>
8. rdfs:subClassOf rdf:resource=”#funcionario”/>
9. </rdfs:Class>
10. </rdf:RDF>
Trecho de código 5.1. Exemplo de uma utilização da classe rdfs:subClassOf
Para que humanos possam compreender a informação foram desenvolvidas
estas propriedades:
• rdfs:comment – Utilizada para fazer comentários de um
determinado recurso.
• rdfs-label – Utilizada para atribuir nomes a recursos.
Também podemos restringir um vocabulário utilizando estas
classes:
7
8. • rdfs:domain – Especifica o domínio de uma propriedade.
Restringe o domínio de uma propriedade.
• rdfs:range – Especifica o alcance da propriedade.
Restringe o valor de uma propriedade.
No trecho de código 5.2, é apresentado um exemplo da utilização da classe
rdfs:domain, onde a propriedade nome se aplicada a todos os funcionários.
1. <?xml version=”1.0”?>
2. <rdf:RDF
3. xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
4. xmlns:rdfs=http://www.w3.org/2000/01/rdf-schema#
5. xml:base=”www.faculdadescoc.com.br/funcionarios”>
6. <rdfs:Class rdf:ID=”funcionario”/>
7. <rdf:Property rdf:ID=”nome”>
8. <rdfs:domain rdfs:resource=”#funcionario”>
9. </rdf:Property>
10. </rdf:RDF>
Trecho de código 5.2. Exemplo de utilização da classe rdfs:domain
6. Web Ontology Language (OWL)
O RDFS proporciona a modelagem de ontologias simples, pois não possui
conectivos lógicos, disjunção e conjunção, resultando em baixa expressividade.
Devido a essa limitação foram desenvolvidas varias linguagens que operam em uma
camada de ontologia sobre a camada RDFS. Dentre essas linguagens encontra-se a
OWL.
A OWL é composta por três linguagens (OWL Lite, OWL DL e OWL Full) que
se diferenciam pelos níveis de expressividade.
• OWL Lite – Oferece suporte a criação de hierarquias
simplificadas de classificação e suas restrições. Suporta cardinalidade
de propriedades com valores 1 ou 0. Seu objetivo é oferecer suporte à
migração de taxonomias e tesauros para o formato de ontologias
(SMITH; WELTY; MCGUINNESS, 2004).
• OWL DL – Oferece suporte a quem necessita de
expressividade máxima, sem perder completude computacional (se
garante tempo finito para todas as computações). Proporciona restrição
de valores de propriedades e relação de disjunção entre classes
(SMITH; WELTY; MCGUINNESS, 2004).
8
9. • OWL Full – Oferece suporte a quem necessita de
expressividade máxima e mais liberdade sintática, pois não possui
restrições. Também não perde completude computacional (SMITH;
WELTY; MCGUINNESS, 2004).
Cada sub-linguagem possui um nível de restrições, sendo a OWL Lite com
mais restrições e a OWL Full que não possui restrições. Apesar dessas diferenças
todas as sub-linguagens são compatíveis, pois estendem uma das outras.
Segundo Smith (2004), são seis os elementos básicos para construção de
ontologias em OWL: Namespaces, cabeçalhos, classes, indivíduos, propriedades e
restrições.
A utilização de namespaces se dá a necessidade de indicar quais
vocabulários estão sendo utilizados e de evitar ambigüidades na interpretação dos
identificadores. No trecho de código abaixo é apresentado um exemplo de um
conjunto de declarações de namespaces.
1. <rdf:RDF
2. xmlns = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
3. xmlns:vin = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
4. xml:base = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
5. xmlns:food= "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#"
6. xmlns:owl = "http://www.w3.org/2002/07/owl#"
7. xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8. xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
9. xmlns:xsd = "http://www.w3.org/2001/XMLSchema#">
Trecho de código 6.1. Exemplo de declaração de namespaces
As declarações xmlns e xmlns:vin identificam o namespace referente a
ontologia. Para a identificação do URI desta ontologia utilizamos a declaração
xml:base. Na quarta linha a ontologia food é importada. A declaração xmlns:owl é
utilizada para introduzir o vocabulário suportado pelo documento owl localizado no
namespace correspondente. As declarações xmlns:rdf, xmlns:rdfs e xmlns:xsd
referem-se as primitivas definidas nas camadas inferiores.
O cabeçalho é responsável por possuir descrições referentes a controle de
versão, pela inclusão de conceitos e propriedades de outras ontologias e registro de
comentários sobre a ontologia (SMITH; WELTY; MCGUINNESS, 2004).
Classes são utilizadas para descrever conceitos de um determinado domínio.
Uma classe é formada por indivíduos que tem mesmas características. Em OWL
existe uma classe chamada owl:Thing, de onde todos os indivíduos são membros.
9
10. Ao definirmos uma classe ela obrigatoriamente será uma subclasse da classe
owl:Thing. Uma classe vazia pode ser definida como owl:Nothing. Criamos uma
classe utilizando-se a tag owl:Class, como exemplificado no trecho de código 6.2
(SMITH; WELTY; MCGUINNESS, 2004).
1. <owl:Class rdf:ID=”Empregado”/>
2. <owl:Class rdf:ID=”Professor”/>
Trecho de código 6.2. Exemplo de declaração de uma classe em OWL
No exemplo acima apenas foram definidas as classes, sem nenhuma
restrição. Para definirmos restrições devemos criar novas classes e propriedades
referentes a elas. Um exemplo seria definir a classe Professor como subclasse da
classe empregado, e a classe professor por sua vez, possui a propriedade sexo
masculino como exemplificado no trecho de código 6.3.
Podemos também definir indivíduos, que nada mais são do que objetos do
mundo. Indivíduos pertencem a classes e podem se relacionar a outros indivíduos e
classes.
Propriedades são utilizadas para descrever fatos. Podem descrever um ou
todos os elementos de uma determinada classe.
1. <owl:ObjectProperty rdf:ID=”masculino”>
2. <rdfs:domain rdf:resource=”#Funcionario”/>
3. <rdfs:range rdf:resource=”#Professor”/>
4. </owl:ObjectProperty>
Trecho de código 6.3. Exemplo de atribuição de uma propriedade
6. Conclusão
Concluímos que devido ao crescente número de dados trafegando na rede se
torna clara a necessidade de uma nova forma de armazenar e buscar esta
informação. É com base neste problema que a Web Semântica surge, buscando
aprimorar os mecanismos de armazenamento e busca de dados, tornando as
buscas inteligentes acessíveis a todos. Outro fator importante é que esta tecnologia
busca reaproveitar a arquitetura existente na Internet, tornando muito mais prática a
sua implementação.
10
11. Referências Bibliográficas
BERNERS-LEE, T.; HENDLER, J.; LASSILA, O. The semantic web, Maio
2001. Disponível em http://www.sciam.com/article.cfm?id=the-semantic-web.
BREITMAN, K. Web Semântica a Internet do futuro. RJ: LTC,2005.
DZIEKANIAK, G.; KIRINUS, J. Web Semântica, Junho 2004. Disponível em
http://www.periodicos.ufsc.br/index.php/eb/article/view/155/0
SMITH, M.; WELTY, C.; MCGUINNESS, D. OWL Web Ontology Language
Guide, Fevereiro 2004. Disponível em http://www.w3.org/TR/2004/REC-owl-guide-
20040210/.
11