RDF e RDFS na Infra-estrutura de Suporte à Web Semântica
GEIZA CRISTINA DA SILVA, TARCÍSIO DE SOUZA LIMA (ORIENTADOR)
Departamento de Ciência da Computação – Instituto de Ciências Exatas
Universidade Federal de Juiz de Fora
Campus Universitário Martelos – 36036-330 – Juiz de Fora, MG
[email protected], [email protected]
Resumo: Muitos bancos de dados de uso corrente são relacionais, com colunas de informação
relacionadas umas às outras. Os relacionamentos entre estas colunas são a semântica, o significado dos
dados. A Web, entretanto, não contém somente dados estruturados e não pode ser considerada como
um banco de dados. A questão do significado é, por um lado, um gargalo, mas por outro, o motor de
arranque para a nova geração Web – a Web Semântica.
Para levar a Web Semântica ao seu potencial pleno, como arena de integração de todos os sistemas
de informação, uma nova camada conceitual deve ser adicionada à arquitetura básica de software da
Web. O W3C (World Wide Web Consortium) vem desenvolvendo a RDF (Resource Description
Framework) e a RDF Schema com este propósito. Esta estrutura se faz necessária para que permitamos
aos computadores representar, compartilhar e integrar a informação. Esta é a plataforma de estudo
neste projeto, cujo objetivo maior é o de estudar a Web Semântica como meio único e universal para
compartilhamento de informações. Em particular, com base na modelagem de um cenário de estudo
segundo funcionalidades da RDF e da RDF Schema, verifica-se seus potenciais como aporte semântico
para a geração Web que está por vir.
Palavras chaves: RDF, RDF Schema, Web Semântica, relacionamento, significado
1 Introdução
Os computadores são úteis para organização e processamento lógicos, mas não são capazes de estabelecer
associações de significado. Um computador tipicamente mantém as informações em hierarquias rígidas, enquanto a
mente humana tem a habilidade especial de ligar pequenas unidades de informação de forma randômica. Com base
nesta constatação, a segunda geração da World Wide Web (WWW, Web), cunhada como Web Semântica [BernersLee, 1999], envolve o arranjo das idéias e de suas associações de forma não restrita. Assim, um computador poderia
representar associações entre coisas que poderiam parecer não relacionadas, mas que de fato, compartilham algum
relacionamento.
Tim Berners-Lee, criador da Web, via nesta a necessidade de uma evolução, até que ela tenha o poder de fazer
com que as informações possuam formato tal que as máquinas venham a fazer associações entre informações que se
relacionam [Berners-Lee, 2001]. Quando isso ocorrer de fato, terá sido implementada a Web Semântica.
Suponha que se queira pesquisar na Web quais as cidades do país que esteja chovendo. Mesmo havendo hoje
uma infinidade de motores de buscas e esses façam uso de algoritmos cada vez mais inteligentes, provavelmente a
uma consulta complexa do tipo “cidades Brasil chuva hoje” não seria retornado nenhum resultado. Se, de outra
forma, esta consulta for feita com as palavras “chuva”, “Brasil” e “cidades”, seriam listados centenas de milhares de
websites e, a menos que alguém possa acessá-los um a um, fazendo ligações entre os resultados, não se teria ainda
resposta para essa pesquisa.
Metadados. São “dados que descrevem dados” mais complexos [W3C, 2001]. Um catálogo de biblioteca é um bom
exemplo de metadados porque nos permite obter dados sobre os livros contidos na biblioteca. Dão informações sobre
quem escreveu, quando foi publicado, que assunto é discutido etc. De maneira geral, metadados são usados para
descrever algum tipo de recurso. Especificamente no contexto do assunto tratado neste artigo, são dados que
descrevem recursos da Web. Outros usos de metadados são preservação dos direitos de uso, assinaturas digitais,
avaliação de conteúdo etc.
Ontologias. Fornecem um entendimento comum e compartilhado de um domínio, que pode ser comunicado através
de pessoas e sistemas de aplicação, tornando-se fator chave para o desenvolvimento da Web Semântica [Lima,
2001]. Elas podem ser vistas como metadados que representam explicitamente a semântica dos dados, de forma
processável por máquina. Os serviços de raciocínio baseados em ontologias podem operacionalizar esta semântica no
sentido de prover a Web com vários serviços. As ontologias ajudam as pessoas e os computadores tanto a acessar a
informação que eles precisam quanto a comunicarem-se entre si de forma efetiva. Isto é possível tornando explícita a
ligação entre a forma e o conteúdo da informação. As ontologias têm, portanto, um papel crucial no sentido que
permitem o acesso, a interoperação e a comunicação baseados em conteúdo, fornecendo à Web um nível de serviço
qualitativamente novo, que consideramos na Web Semântica. Ela une em rede incríveis porções do conhecimento
humano, complementando-as com capacidade de processamento de máquina.
Linguagens. A RDF (Resource Description Framework) [Lassila, 1999] é uma camada conceitual que junto com a
XML (Extensible Markup Language) [Bray, 2000] tornam-se cruciais para a implementação da “Web de
significado”. Para que a Web seja a integração de todos os sistemas de informação, levando-a, então a seu pleno
potencial, a RDF foi desenvolvida pelo W3C – World Wide Web Consortium [W3C, 2001], órgão padronizador de
tudo o que é relativo a Web. A RDF é o padrão do W3C para metadados na Web. Essa linguagem permite aos
computadores representar e compartilhar dados semânticos na Web [Lassila, 1999]. A RDF pode ser utilizada em
várias áreas de aplicação da Web: na busca de recursos para melhorar os mecanismos de sites de busca já existente,
em bibliotecas virtuais descrevendo o conteúdo disponível, no comércio eletrônico, principalmente na segurança, em
websites particulares etc. Também é útil em outras aplicações que estão fora do escopo da Web, como recursos
multimídias em geral, bibliotecas digitais e outras. A RDF em si é uma linguagem simples que é capaz de fazer
relacionamentos entre informações, mas, além disso, é necessário um meio para definição de dados. A RDF Schema
[Brickley, 2000] foi criada pelo W3C com essa finalidade.
O objetivo deste artigo é o de verificar o potencial da RDF e da RDF Schema como aporte semântico para a Web.
A seção 2 descreve os níveis de linguagens para a Web Semântica, contextualizando as linguagens RDF e RDF
Schema dentro dessa arquitetura. A seção 3 apresenta alguns softwares desenvolvidos para trabalhar a RDF. As
seções 4 e 5 descrevem detalhes da RDF e da RDF Schema, respectivamente, de acordo com a especificação do
W3C. Isso é feito através de exemplos e figuras de forma a facilitar o entendimento. Para ilustrar os recursos dessas
linguagens a seção 6 modela um cenário, apresentado em forma de grafo, levando-se em consideração o
relacionamento que há entre Artistas e suas Obras. A seção apresenta também exemplos de consultas para o cenário
modelado. A seção 7 conclui este artigo com algumas considerações finais. O código RDF/XML do cenário é
apresentado no anexo.
2 Níveis de linguagens para a Web Semântica
A Web Semântica pode ser vista como uma arquitetura em três níveis [Berners-Lee, 1998], conforme mostrado na
figura 1. Somente quando um modelo comum é geral ele pode ser usado por qualquer aplicação mapeada sobre esse
modelo.
Nível Lógico
OIL + DAML
Nível Esquema
RDF Schema
Nível Dados
RDF
Figura 1: Níveis de linguagens para a Web Semântica
O modelo geral aqui é o da Estrutura de Descrição de Recurso – a RDF – e o nível de dados da arquitetura é
constituído por ela. Esta é uma linguagem simples que está apta a prover um modelo de afirmações e citações em que
podemos mapear os dados em qualquer novo formato. Documentos RDF neste nível não têm grande poder, mas
espera-se que estes dados, enquanto limitados dentro de uma aplicação, sejam combinados, mais tarde, com dados de
outras aplicações dentro da Web. Com toda a Web constituída dessas aplicações, elas deverão ser capazes de usar
uma estrutura comum para combinar sua informação. O modelo básico da RDF permite que se faça relacionamento
entre dados, mas não nos dá muitas ferramentas para isso. Faz-se necessário um nível de esquema onde é declarada
a existência de novas propriedades. Assim como na SGML (Standard Generalized Markup Language) [Connolly,
1997] o DTD (Document Type Definition) [Bray, 2000] permite checar se os elementos são utilizados em posições
apropriadas, na RDF um esquema permitirá checar que, por exemplo, a carteira de um motorista tem o nome de uma
pessoa, e não um modelo de carro, como seu "nome".
O próximo nível é o nível lógico. É necessário que haja caminhos de escrita lógica dentro de documentos que
permitam coisas tais como a checagem de um documento contra um conjunto de regras de autoconsistência. Essa
camada necessita de linguagens de representação de conhecimento, como a OIL (Ontology Inference Layer) ou sua
sucessora, a DAML+OIL (DARPA Agent Markup Language, em um projeto conjunto com a OIL) [DAML,
20001][Horrocks, 2001], que está sendo desenvolvida por um grupo de cientistas europeus e norte-americanos. A
proposta deste artigo, entretanto, é a de se ater nos níveis de dados, com a RDF, e de esquema, com a RDF Schema.
3 Softwares para RDF
O W3C, na especificação de modelo e sintaxe da RDF, reservou duas seções que são básicas para aqueles que
querem implementar softwares para a RDF. Elas proporcionam conhecimento do modelo formal e gramática formal
da RDF, de forma que seja possível entender seu funcionamento em mais baixo nível. Já podemos encontrar na Web
alguns programas como banco de dados, editores, interpretadores e compiladores que estão sendo desenvolvidos e
outros que já estão disponíveis para os usuários. Dentre esses foram separados alguns que serão descritos nas
próximas subseções deste artigo.
3.1 O editor RDFedt
O RDFedt [Winkler, 2001] foi o editor de RDF escolhido para ser usado neste artigo. O RDFedt auxilia na
construção de documentos estruturados em RDF e também RSS (RDF Site Summary). Esse editor suporta: a
linguagem RDF propriamente dita; a linguagem RDF Schema; elementos Dublin Core (padrão de metadados); o
RDF Site Summary 1.0 com os seguintes módulos: agregação, anotação, mudança de página, conteúdo, corte,
organização, threading e RSS 0.91; declarações e folhas de estilos em XML; minimização de tags; conjunto de
elementos importados; abrir e salvar documentos em arquivos do tipo .xml; gerar código a partir da árvore RDF;
imprimir os códigos gerados; testar entradas na árvore RDF; gerar automaticamente lista de links baseados em RDF
de um documento HTML. A figura 2 mostra uma imagem de tela do RDFedt para o cenário modelado na seção 6.
Figura 2: Imagem de tela do RDFedt
3.2 O RDFSuite do ICS-FORTH1
O ICS-FORTH, tendo em vista a realização do potencial total da Web Semântica, criou um conjunto de ferramentas
para RDF [Alexaki, 2001] compreendendo um compilador de validação de RDF – o VRP (Validating RDF Parser),
um banco de dados específico para RDF – o RSSDB (RDF Schema Specific Data Base) e a RQL (RDF Query
Language) que é uma linguagem de consultas para RDF.
3.2.1 O compilador de validação de RDF (VRP)
Segundo seus criadores (Alexaki, 2001] este é o primeiro compilador de RDF que suporta validação semântica em
recursos de descrições e esquemas. Este compilador analisa sintaticamente as declarações de um documento dado em
RDF/XML de acordo com a especificação de modelo e sintaxe da RDF, verifica se os esquemas RDF e as instâncias
de metadados satisfazem as restrições semânticas estabelecidas pela especificação da RDF Schema do W3C.
O compilador VRP está atualmente disponível para verificar a finalidade de um lançamento alfa. Há uma
distribuição fonte e uma de rotinas. Ambas requerem Java 1.2 ou superior (como o YACC/Lex para C). O ICSFORTH não garante a exatidão do programa. Esta versão atual é para ambiente Linux. Dentre as suas características,
podemos citar: desenvolvido 100% em Java; admite RDF embutido em HTML ou XML; suporta Unicode completo;
verifica a semântica e a sintaxe de RDF Schema e instâncias de metadados; valida de declarações através de diversos
namespaces RDF/XML; baseado em ferramentas geradoras de compiladores padrões para o Java CUP/JFlex; fácil de
usar e de se integrar com outros softwares. Quanto às suas limitações, o compilador não suporta o atributo
"aboutEachPrefix" da RDF e, no caso de uso do atributo "aboutEach" da RDF, o compilador não suporta referências
a outros arquivos. Para um compilador o relatório de erros é uma das características principais. Conseqüentemente o
VRP fornece uma lista enorme de mensagens de erro diferenciadas, refinadas com informações adicionais. O sistema
fornece para cada erro um número original do erro.
3.2.2 O banco de dados específico da RDF Schema (RSSDB)
É o primeiro complexo de RDF que explora o conhecimento do esquema para gerar automaticamente uma
representação de relacionamento entre objetos (SQL3) de metadados RDF e carregar devidamente a descrição de
recursos. Este módulo do conjunto ainda está sendo desenvolvido pelo ICS-FORTH.
3.2.3 A linguagem de consulta da RDF (RQL)
A RQL (RDF Query Language) é a primeira linguagem de consulta declarativa (em estilo ODMG-OQL) para
metadados e esquemas RDF. RQL é uma linguagem tipada que conta com um modelo de grafos formal, capturando a
modelagem primitiva em RDF e RDF Schema e permitindo a interpretação de descrições sobrepostas por meio de
um ou mais esquemas. A novidade da RQL está em sua habilidade de alternar diretamente entre esquemas e dados de
consulta de forma transparente, a taxonomia de classes e propriedades, bem como as múltiplas classificações dos
recursos.
Dentre suas características estão: (a) desenvolvimento eficiente em C++ no topo de um sistema gerenciador de
banco de dados objeto-relacional (por exemplo PostgreSQL); (b) conta com uma API RDF de consulta, fácil de
executar para diferentes sistemas gerenciadores de banco de dados; (c) promove tanto quanto possível a avaliação da
consulta ao motor subjacente ao gerenciador de banco de dados; (d) alto nível de acesso a funcionalidades para:
navegação por portais de catálogos (fácil navegação, descoberta de recursos), personalização do conteúdo do portal
(para vários alvos de audiências), esquemas de buscas e recursos de portais (exploração eficaz e eficiente de grandes
bases de descrições), permutação do amontoado de descrições de recursos dentro ou através das comunidades (que
empregam esquemas diferentes).
Quanto à disponibilidade, o interpretador RQL (motor de consulta) está atualmente em desenvolvimento. Está
disponível um demo on-line, para testar principalmente a liberação de uma versão alfa. O ICS-FORTH não dá ainda
nenhuma garantia na exatidão do programa.
1
O ICS – Institute of Computer Science é um dos sete institutos de pesquisa que constituem o FORTH – Foundation
of Research Technology Hellas, centro de pesquisa e desenvolvimento do governo grego. Disponível em:
<http://ics.forth.gr/>.
3.3 O SiRPAC – interpretador e compilador de RDF
O SiRPAC (Simple RDF Parser & Compiler) é um conjunto de classes Java que podem compilar documentos
RDF/XML conforme as 3-tuplas do modelo de dados da RDF. Os documentos podem estar em um sistema de
arquivo local ou em uma URI (Universal Resource Identifier) na Web. Quando usado via linha de comando, o
compilador pode ser configurado para buscar automaticamente esquemas RDF correspondentes a seus namespaces
declarados. A versão mais recente deste compilador é a SiRPAC 1.17, que conta com a correção de alguns erros
encontrados nas versões anteriores.
Para se utilizar do seu serviço on-line basta entrar com uma URI ou colar um documento em RDF/XML no
campo do texto. Será retornada uma representação de 3-tuplas do modelo de dados correspondente assim como um
grafo do modelo de dados. É possível configurar a forma de apresentação deste grafo, desde o tipo de arquivo até as
cores. O serviço é baseado na versão 1.17. Estão disponíveis para testes vários exemplos de RDF. A figura 3 ilustra a
implementação do SiRPAC.
Figura 3: Imagem de tela do serviço on-line
3.4 O rdfDB: um banco de dados para RDF
O rdfDB [Guha, 2001] foi criado para ser um banco de dados simples, escalável e de código aberto. O objetivo deste
projeto é construir um banco de dados que seja capaz de: suportar um grafo orientado a API através de uma
linguagem de consulta textual como RDF; carregar e recarregar um arquivo RDF de uma URL na base de dados;
escalável para os nós e tuplas; fornecer suporte a esquemas RDF; fornecer suporte para algumas formas básicas de
inferência; fornecer o acesso de C e de Perl à base de dados; aplicar a filosofia do Perl: as coisas simples devem ser
simples e as coisas complexas devem ser possíveis.
A versão atual é 0.46 e foi desenvolvida para Unix, especificamente para BSD (Berkeley Software Distribution) e
Linux. O rdfDB se utiliza de uma linguagem de consulta de alto nível chamada SQLish. Suas principais operações
são: criação e exclusão de um banco de dados; carregamento de arquivos em um banco de dados; inserção e exclusão
de tuplas de dados RDF; comandos de namespace e consultas ao banco de dados.
4 A linguagem RDF
Basicamente, a RDF define um modelo de dados para a descrição de dados semânticos processáveis por máquina,
que se parece com um diagrama de entidades e relacionamentos, com as propriedades RDF representando
relacionamentos entre recursos. Mais precisamente, os RDF Schemas, que são instâncias de modelos de dados RDF,
são diagramas ER (Entidade-Relacionamento).
4.1 Representação da RDF por grafos rotulados
Uma declaração RDF pode ser representada através de grafos rotulados, que também podem ser chamados de
“diagramas de nós e arcos”. A figura 4 é um esquema de como uma declaração pode ser representada através destes
diagramas.
propriedades
RECURSO
RECURSO
Figura 4: Esquema de representação da RDF em grafo
Os nós representam os recursos e as propriedades são representadas pelos arcos. Quando um nó é um literal, é
representado por um retângulo. A direção da seta é significante: o arco sempre começa no sujeito e aponta para o
objeto da declaração, conceitos esses que serão definidos na próxima seção.
4.2 O modelo básico da RDF
O fundamento da RDF estabelece um modelo básico para descrição de dados que consiste em três tipos de objetos.
Recursos: um recurso é qualquer coisa descrita em expressões da RDF. Pode ser uma página da Web, um website
inteiro ou parte deste. Pode ser também um objeto não acessível via Web, como um livro, uma revista ou um CD.
Recursos são sempre especificados por URI’s.
Propriedades: uma propriedade é uma característica, um atributo ou uma relação utilizada para descrever o recurso.
Declarações: uma declaração é um recurso específico com uma propriedade definida mais o valor desta propriedade.
Podemos dizer que uma declaração é um recurso mais as propriedades desse recurso e mais o valor dessas
propriedades.
Essas três partes individuais são chamadas respectivamente de sujeito, predicado e objeto. Em outras palavras, o
modelo básico primitivo da RDF consiste de tuplas de objeto, propriedade e valor.
4.2.1 Exemplos
Considere a seguinte sentença: Marcio de Faria é o diretor do site http://www.jfservice.com.br.
Esta sentença tem as seguintes partes:
Sujeito (Recurso)
http://www.jfservice.com.br
Predicado (Propriedade)
Diretor
Objeto (literal)
“Marcio de Faria”
Isto pode também ser representado através de grafos rotulados como na figura 5.
Diretor
http://www.jfservice.com.br
Marcio de Faria
Figura 5: Nó simples e diagrama de arco
Este diagrama pode ser lido como: http://www.jfservice.com.br tem como diretor Marcio de Faria ou, de maneira
mais geral, “<sujeito> TEM <predicado> <objeto>”.
No próximo exemplo, considere que se quer acrescentar mais características ao objeto da declaração (“Marcio de
Faria”). Observe a seguinte sentença: O indivíduo cujo nome é Marcio de Faria, email [email protected], é o
diretor de http://www.jfservice.com.br. O modelo para esta sentença é o da figura 6. A diferença entre a sentença
anterior e essa é que na primeira temos uma declaração com uma única propriedade ligada a um objeto, um literal. Já
nessa sentença, há uma propriedade estruturada (Diretor) que possui duas outras propriedades (Nome e Email). Em
RDF, propriedades estruturadas são representadas como outro recurso e como a sentença em questão não dá nome
para este recurso, ele é anônimo e por isso, representado por uma elipse vazia. Este diagrama pode ser lido como:
http://www.jfservice.com.br tem diretor e este tem nome Marcio de Faria e email [email protected].
http://www.jfservice.com.br
Diretor
Nome
Marcio de Faria
Email
[email protected]
Figura 6: Propriedade com valor estruturado
Continuando com os exemplos, imagine que exista um número único por funcionário designado por ID. A URI
que serve como chave única para o funcionário Marcio de Faria é http://www.w3.org/staffid/395. Podemos escrever
isto como: O indivíduo referenciado por ID funcionário 395 é chamado de Marcio de Faria, email
[email protected]. O website http://www.jfservice.com.br é dirigido por este indivíduo. O modelo RDF para
essas sentenças é o da figura 7.
http://www.jfservice.com.br
Diretor
http://www.jfservice.com.br/staffid/395
Nome
Marcio de Faria
Email
[email protected]
Figura 7: Propriedade estruturada com identificador
A elipse vazia do exemplo anterior é substituída aqui pela URI http://www.jfservice.com.br/staffid/395. A
entidade estruturada pode também ser designada por um único identificador, como foi aplicado neste exemplo. O
diagrama acima corresponde à leitura de: O website http://www.jfservice.com.br tem por diretor o funcionário
referenciado pelo ID 395 chamado Marcio de Faria e que tem por email [email protected].
Freqüentemente o valor de uma propriedade é alguma coisa que tem informação adicional que acaba sendo
considerada parte daquele valor. Em outras palavras, há uma necessidade de se qualificar valores de propriedades.
Exemplos disso seria a denominação de uma unidade de medida ou alguma outra notação. No modelo RDF uma
propriedade de valor qualificado é simplesmente outra instância de um valor estruturado. O objeto da declaração
original é este valor estruturado e os qualificadores são propriedades deste recurso comum.
4.3 Sintaxe básica da RDF
A especificação do W3C apresenta duas sintaxes de XML para codificação de um modelo de instância de dados em
RDF: A sintaxe de serialização básica e a sintaxe básica abreviada. A diferença mais marcante entre as duas está
em como a estrutura do modelo RDF é apresentada. A primeira nos oferece uma estrutura mais clara enquanto a
segunda uma forma mais compacta. Outra característica desta é que os elementos DTDs podem ser diretamente
interpretados como modelos RDF.
Como exemplo disso tem-se a terceira sentença acima, adicionando-se o fato que o recurso
http://www.jfservice.com.br/staffid/395 representa uma instância de uma Pessoa: O indivíduo referenciado por ID
funcionário 395 é chamado de Marcio de Faria,
http://www.jfservice.com.br é dirigido por este indivíduo.
Usando a sintaxe de serialização completa tem-se:
email
[email protected].
O
Website
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:Description about="http://www.jfservice.com.br">
<s:Diretor>
<rdf:Description about="http://www.jfservice.com.br/staffid/395">
<rdf:type resource="http://description.org/schema/Pessoa"/>
<v:Nome>Marcio de Faria</v:Nome>
<v:Email>[email protected]</v:Email>
</rdf:Description>
</s:Diretor>
</rdf:Description>
</rdf:RDF>
E usando a sintaxe de serialização abreviada temos o seguinte código RDF/XML:
<rdf:RDF
<rdf:Description about="http://www.jfservice.com.br">
<s:Diretor>
<rdf:s:Pessoa about="http://www.jfservice.com.br/staffid/395">
<v:Nome>Marcio de Faria</v:Nome>
<v:Email>[email protected]</v:Email>
</s:Pessoa>
</s:Diretor>
</rdf:Description>
</rdf:RDF>
Observe que nos exemplos de sintaxe básica o prefixo ‘s’ refere-se a um namespace específico definido na
declaração XML tal como:
xmlns:s="http://description.org/schema/"
Um namespace [Bray, 1999] é uma coleção de nomes, identificadas por uma referência URI, que são usadas em
documentos XML como tipos de elementos e nomes de atributos.
A especificação do W3C do modelo e sintaxe da RDF apresenta várias formas de uso tanto da sintaxe de
serialização básica, como para a abreviada. Todas essas formas para fins da RDF são equivalentes. Algumas delas
podem resultar em expressões altamente condensadas que não são recomendadas, já que a possibilidade de
inconsistência é maior de que quando se usa prefixos explícitos.
4.4 Modelo de containers
O RDF define três tipos de objetos de containers, a saber:
Bag. É uma lista não ordenada de recursos ou literal, ou seja, é usada para declarar que uma propriedade tem
múltiplos valores e que não importa a ordem em que esses valores são dados.
Sequence. É uma lista ordenada de recursos ou literal, ou seja, é usada para declarar que uma propriedade tem
múltiplos valores e que a ordem em que esses valores são dados é significante.
Alternative. É uma lista de recursos ou literal que representa alternativa de valores para uma propriedade. Neste
caso, qualquer um dos valores na lista pode ser escolhido como apropriado.
Para representar um container, a RDF usa a propriedade type para identificar uma coleção específica, que deve
ser declarada como sendo uma instância de um dos objetos de containers. A relação entre os membros do container e
seus recursos é definida por um conjunto de propriedades nomeadas simplesmente por “_1”, “_2”, “_3”, etc.
4.4.1 Exemplos
Considere como exemplo de container a seguinte declaração: Os alunos da turma A são Maria, José, Carlos,
Antônio e Francisco. O modelo RDF para essa sentença é o da figura 8.
rdf:type
rdf:Bag
/turmas/A
Alunos/Maria
Alumos
rdf:_1
Alunos/José
rdf:_2
rdf:_3
rdf:_4
Alunos/Carlos
Alunos/Antônio
Figura 8: Container do tipo Bag
O código RDF/XML pode ser algo do tipo:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:Description about="http://www.escola.br/turmas/A">
<s:Alunos>
<rdf:Bag>
<rdf:li rdf:resource="http://www.escola.br/turma/A/alunos/Maria"/>
<rdf:li rdf:resource="http://www.escola.br/turma/A/alunos/José"/>
<rdf:li rdf:resource="http://www.escola.br/turma/A/alunos/Carlos"/>
<rdf:li rdf:resource="http://www.escola.br/turma/A/alunos/Antônio"/>
</rdf:Bag>
</s:Alunos>
</rdf:Description>
</rdf:RDF>
Note que a RDF usa o elemento li para explicitar o número de elementos de cada membro. O próximo exemplo
vem ilustrar os três tipos de objetos de container. Considere um documento que tem dois autores, é apresentado em
duas línguas diferentes cada qual tendo sua localização na Web. Isso em RDF/XML pode ser escrito como:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema">
<rdf:Description about="http://www.w3.org/rdf.html">
<s:Autor>
<rdf:Seq ID="AutoresPorNome">
<rdf:li>Ora Lassila</rdf:li>
<rdf:li>Ralph R.Swick</rdf:li>
</rdf:Seq>
</s:Autor>
<s:Recursos>
<rdf:Bag ID="Sites">
<rdf:li rdf:resource="http://www.xml.it/RDF/REC-rdf-syntax-19990222-it.h tml"/>
<rdf:li rdf:resource="http://www.la-grange.net/w3c/REC-rdf-syntax"/>
</rdf:Bag>
</s:Recursos>
<s:Titulo>
<rdf:Alt>
<rdf:li xml:lang="it">Resource Description Framework (RDF) Modello e Sintassi
</rdf:li>
<rdf:li xml:lang="fr">Spécification du modèle et la syntaxe du Cadre de Description
des Resources </rdf:li>
</rdf:Alt>
</s:Titulo>
</rdf:Description>
</rdf:RDF>
Neste exemplo, os autores são classificados por ordem alfabética, por isso foi usado Sequence, já que a ordem em
que são apresentados seus nomes se faz significante. As localizações na Web são equivalentes, portanto é usado um
Bag. O container Alternative é usado porque cada tradução da publicação tem um título único e esse tem duas
variantes, as línguas que são apresentadas.
5 A linguagem RDF Schema
Como já foi citado, o modelo de dados da RDF pode lembrar um diagrama de entidade-relacionamento, já que as
propriedades da RDF representam relacionamentos entre recursos. A RDF Schema [Brinkley, 2000] é responsável
por prover mecanismos para declaração dessas propriedades. Um esquema não define somente as propriedades dos
recursos, mas também os tipos de recursos que estão sendo descritos. Pode ser entendido como uma espécie de
dicionário onde são definidos os termos que serão utilizados em declarações RDF. A especificação da RDF Schema
do W3C fornece os mecanismos necessários à definição de elementos, de classes de recursos, de possíveis restrições
de classes e relacionamentos e detecção de violação de restrições.
Escopo. A especificação da RDF Schema foi diretamente pensada levando em consideração problemas específicos e
imediatos. Seus criadores esperam que outros problemas futuros compartilhem características parecidas e que assim
seja possível usar as classes básicas já projetadas. Os problemas em questão são: PICS (Platform for Internet Content
Selection), os metadados simples da Web, mapa de sites e outras ferramentas de navegação e P3P (Platform for
Privacy Preferences Project), descritos a seguir.
• PICS. O modelo e sintaxe RDF é adequado para representar rótulos de PICS, que foi originalmente desenvolvido
para ajudar pais e professores a controlar o que as crianças acessam na Internet, além de facilitar outros usos de
rótulos, incluindo assinatura de código e privacidade. A RDF Schema, no entanto, não fornece um mapeamento
de propósito geral de sistemas de avaliação de PICS dentro de uma representação de RDF.
• Metadados simples da Web. Uma aplicação óbvia da RDF está na descrição de páginas da Web. Essa é uma das
funções básicas da iniciativa Dublin Core. O Dublin Core [DCMI,2001] é um conjunto de 15 elementos
largamente aplicáveis para descrever recursos da Web para habilitar sua descoberta.
• Mapa de sites e outras ferramentas de navegação. A especificação da RDF Schema fornece recursos
suficientes para criar modelos RDF que representam sistemas hierárquicos para representar taxonomia de
assuntos. Mapas de sites, dicionários e esquemas de classificação de bibliotecas são exemplos bem conhecidos de
sistemas hierárquicos.
• P3P. A plataforma Projeto de Preferências de Privacidade requer uma gramática para construção de declarações
sobre práticas de coleção de dados e preferências pessoais como exercício sobre estas práticas, assim como uma
sintaxe de dados estruturados de troca. O uso de um esquema de metadados para descrever a estrutura formal de
descrição de práticas de privacidade permitirá privacidade na prática de dados para serem utilizados junto com
outros metadados em uma consulta durante descoberta de recurso, e permitirá a um agente de software agir de
acordo com a privacidade dos metadados usando as mesmas técnicas como utilizadas para outros metadados
descritivos.
Convenções. (a) Nomes de Classe têm a primeira letra maiúscula (Ex: rdfs:Resource); (b) Palavras adicionais ao
nome de classe são também maiúsculas (Ex: rdfs:ConstraintProperty); (c) Nomes de propriedades não têm a
primeira letra não maiúscula (Ex: rdfs:domain); e (d) Palavras adicionais ao nome são maiúsculas (Ex:
rdfs:subClassOf).
Restrições. A RDF Schema serve também para especificar restrições visando um modelo RDF consistente. Exemplo
de restrições são rdfs:domain e rdfs:range que se refere a propriedades de uso e a regra que
rdfs:subPropertyOf e rdfs:subClassOf não devem formar laços. A RDF Schema usa as propriedades de
restrição para definir como suas propriedades podem ser utilizadas. Classes e propriedades de restrições serão
mostradas com detalhes na seção 5.3.
5.1 Modelagem primitiva da RDF Schema
Esse termo refere-se às classes, propriedades e restrições do núcleo da RDF Schema. A RDF Schema descrita na
especificação do W3C é uma coleção de recursos da RDF que podem ser utilizados para descrever propriedades de
outros recursos da RDF para definir vocabulários para aplicações específicas da RDF. O vocabulário do núcleo é
definido usando o namespace ‘rdfs’ assim como o da RDF usa o prefixo ‘rdf’.
Os recursos que serão descritos nas próximas seções podem ser vistos em forma de esquema na figura 9
[Brickley, 2000] que ilustra os conceitos de classe, subclasse e recurso. Uma classe é representada pelo retângulo de
cantos arredondados, os recursos são representados por um grande ponto preto e as setas apontam de um recurso à
sua respectiva classe. Uma subclasse, que também é uma classe, é representada por um retângulo de cantos
arredondados envolvido em outro, sua superclasse.
Figura 9: Classes e recursos em um esquema de conjuntos e elementos
A figura 10 [Brickley, 2000] mostra a hierarquia entre classes através de grafo. A seta com o indicativo s aponta
do nó que representa a subclasse ao nó representante da sua respectiva classe, indicando que há entre elas uma
propriedade rdfs:subClassOf e a seta com o indicativo t, similarmente, aponta do nó que representa o recurso ao
da sua instância, indicando que há entre eles uma propriedade rdf:type.
Figura 10: Hierarquia de classes da RDF Schema
5.2 Classes e propriedades do núcleo
Os seguintes recursos são as classes do núcleo que são definidas como parte do mecanismo da RDF Schema:
• rdfs:Resource: representa o conjunto de recursos do modelo básico da RDF, descrita em 4.2.
• rdfs:Property: representa as propriedades da RDF, que é subconjunto de recursos.
Ex: <rdf:Property rdf:ID="faz"/>
• rdfs:Class: Similar à noção de uma classe em linguagens de orientação a objeto como Java, tendo em vista
que uma classe RDF pode representar qualquer recurso tais como: websites, pessoas, tipo de documentos ou
conceitos abstratos. Ex: <rdfs:Class rdf:ID="Artista"/>.
As propriedades a seguir fornecem um mecanismo para expressar relacionamentos entre classes e suas instâncias
ou superclasses. São instâncias da classe rdf:Property:
• rdfs:type: indica que um recurso é membro de uma classe e tem todas as características que são de se esperar
de um membro daquela classe. Quando um recurso tem uma propriedade rdf:type cujo valor é alguma classe
específica, esse recurso é uma instância dessa classe. Um recurso pode ser uma instância de mais que uma classe.
• rdfs:subClassOf: especifica uma relação hierárquica entre classes. A figura 11 mostra um exemplo simples,
onde foram definidas uma classe ‘Artista’ e duas subclasses de ‘Artista’: ‘Compositor’ e ‘Escritor’. Note que
rdfs:Class é subclasse de rdfs:Resource e essa, é uma instância de rdfs:Class.
s = rdfs:subClassOf
rdfs:Resource
s
t
t = rdf:type
s
s
t
Artista
rdfs:Class
s
t
s
t
Compositor
Escritor
Figura 11: Exemplo de hierarquia de classes
A seguir é mostrado o código RDF/XML correspondente ao grafo.
<?xml version="1.0" ?>
<rdf:RDF xml:lang="en"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Class rdf:ID="Artista">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#" />
</rdfs:Class>
<rdfs:Class rdf:ID="Compositor">
<rdfs:subClassOf rdf:resource="#Artista" />
</rdfs:Class>
<rdfs:Class rdf:ID="Escritor">
<rdfs:subClassOf rdf:resource="#Artista" />
</rdfs:Class>
</rdf:RDF>
• rdfs:subPropertyOf: especifica a relação hierárquica entre propriedades. Nunca pode se declarar que uma
classe/propriedade é uma subclasse/subpropriedade de si mesma, nem de qualquer uma de suas
subclasses/subpropriedades. A figura 12 mostra um exemplo simples que expressa hierarquia entre propriedades.
Foram definidas a propriedade ‘faz’ e duas subpropriedades de ‘faz’: ‘compõe’ e ‘escreve’. Em seguida, é
mostrado o código RDF/XML correspondente à parte do grafo que se refere a propriedades.
faz
Artista
Arte
rdfs:subproperty
compoe
Musica
Compositor
escreve
Escritor
Livro
Figura 12: Exemplo de hierarquia de propriedades
<?xml version="1.0" ?>
<rdf:RDF xml:lang="en"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Property rdf:ID="faz">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
</rdf:Property>
<rdf:Property rdf:ID="compoe">
<rdfs:subPropertyOf rdf:resource="#faz" />
</rdf:Property>
<rdf:Property rdf:ID="escreve">
<rdfs:subPropertyOf rdf:resource="#faz"/>
</rdf:Property>
</rdf:RDF>
• rdfs:seeAlso: especifica que um recurso contém informação sobre o sujeito de um recurso.
• rdfs:isDefinedBy: é uma subpropriedade de rdfs:seeAlso; especifica o recurso que define o sujeito da
declaração.
5.3 Restrições do núcleo
As classes e propriedades descritas a seguir são utilizadas para declarar restrições de consistência:
• rdfs:ContraintResource: define uma subclasse de rdfs:Resource cujas instâncias são construções RDF
Schema envolvidas no designo de restrições. O propósito desta classe é fornecer um mecanismo que permita que
processadores da RDF chequem a consistência de um modelo RDF.
• rdfs:ContraintProperty: define uma subclasse de rdfs:Resource cujas instâncias são propriedades
utilizadas para especificar restrições. Esta classe é uma subclasse de rdfs:ConstraintResource e
corresponde ao subconjunto daquela classe representando propriedades.
• rdfs:range: instância de rdfs:ConstraintProperty que é utilizada para reprimir valores de propriedades.
O valor de uma propriedade range é sempre uma classe. Uma propriedade pode ter no máximo uma propriedade
rdfs:range.
• rdfs:domain: instância de rdfs:ConstraintProperty que é usada para especificar uma classe em que uma
propriedade pode ser utilizada. Uma propriedade pode ter zero, uma ou mais que uma classe como seu domínio.
Continuando com o exemplo anterior de Artista, temos:
<?xml version="1.0" ?>
<rdf:RDF xml:lang="en"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
<rdf:Property rdf:ID="faz">
<rdfs:domain rdf:resource="#Artista" />
<rdfs:range rdf:resource="#Arte" />
</rdf:Property>
<rdf:Property rdf:ID="compoe">
<rdfs:domain rdf:resource="#Compositor" />
<rdfs:range rdf:resource="#Musica" />
</rdf:Property>
<rdf:Property rdf:ID="escreve">
<rdfs:domain rdf:resource="#Escritor" />
<rdfs:range rdf:resource="#Livro" />
</rdf:Property>
</rdf:RDF>
Isso quer dizer que, foram definidas três propriedades, a saber: ‘faz’, ‘compõe’ e ‘escreve’. A propriedade ‘faz’ é
aplicável para qualquer ‘Artista’ e seu valor é ‘Arte’. A propriedade ‘compõe’ é aplicável para qualquer
‘Compositor’ e tem como valor ‘Música’, assim como a propriedade ‘escreve’ que é definida para qualquer
‘Escritor’ com valor igual a ‘Livro’.
5.4 Conceitos de modelo e sintaxe da RDF
As seguintes classes e propriedades são referentes aos conceitos de RDF introduzidos acima quando se discutiu
acerca do modelo e sintaxe da RDF:
• rdf:Literal: corresponde ao conjunto chamado ‘Literais’ descrito na seção 4.2.
• rdf:Statement: corresponde ao conjunto chamado ‘declaração’ descrito na seção 4.2.
• rdf:subject:corresponde à propriedade chamada ‘sujeito’ descrito na seção 4.2.
• rdf:predicate: corresponde à propriedade chamada ‘predicado’ descrito na seção 4.2.
•
•
•
•
•
•
•
rdf:object: corresponde à propriedade chamada ‘objeto’ descrito na seção 4.2.
rdf:value: corresponde a propriedade chamada ‘valor’ descrito na seção 4.2.
rdfs:Container: é utilizada para assegurar as classes de containers descritas na seção 4.4.
rdf:Bag: corresponde à classe chamada ‘Bag’ descrita na seção 4.4.
rdf:Seq: corresponde à classe chamada ‘Seq’ descrita na seção 4.4.
rdf:Alt: corresponde à classe chamada ‘Alt’ descrita na seção 4.4.
rdfs:ContainerMembershipProperty: corresponde as propriedades _1, _2, _3, etc. utilizadas para indicar os
membros do container descrito na seção 4.4.
6 Modelagem de um cenário de aplicação
Para ilustrar os recursos da RDF e RDF Schema descritos anteriormente, foi modelado um cenário (figura 13)
levando-se em conta o relacionamento que há entre Artistas e suas Obras. Assim foi considerado que a criação de
todo Artista resulta em uma Arte que é exibida em alguma forma de coletânea que foi chamada de Álbum. Além
disso, as Artes, seja a Música ou a Literatura (aqui expressa por Livro), possuem recursos externos como título, ano
de criação, tipo de arquivo, gravadora ou editora, e outros atributos, dos quais os três primeiros foram usados na
modelagem.
n s 1 : w w w .rd f.c o m /e s q u e m a
S
C
H
E
M
A
S t r in g
S t r in g
nom e
fa z
A r t is t a
R
E
C
U
R
S
O
S
In te g e r
Á lb u m
C o m p o s it o r
M ú s ic a
e s c re v e
L iv r o
nom e
g ê n e ro
p a r c e r ia
S t r in g
S t r in g
R e c u rs o E x te rn o
“P o e m a s ”
t ít u lo
tip o _ a r q u iv o
a n o _ c r ia ç ã o
& r1
g ê n e ro
& r2
títu lo
S t r in g
“1 9 3 0 ”
e s c re v e
s o b re n o m e
S t r in g
a n o _ c r ia ç ã o
com põe
“ M u r ilo ”
D
O
S
e x ib id a
s o b re n o m e
E s c r it o r
D
E
S
C
R
I
Ç
Ã
O
A rte
n s 2 : w w w .w s .c o m /n s
“ P o e s ia s ”
“M e n d e s ”
“A n a ”
nom e
p a r c e r ia
r 1 : w w w . c e e m . u f jf . b r / o p o e t a . h t m
“T o to n h o
V ille r o y ”
r 2 : w w w . c e e m . u f jf . b r / p o e m a s . h t m
com põe
s o b re n o m e
“ C a r o lin a ”
& r3
& r4
com põe
& r5
títu lo
e x ib id a
títu lo
r 3 :w w w . g e o c itie s .c o m /o m e lh o r d e m im /
“C o n fe s s o ”
títu lo
& r6
b io g r a f . h t m
“A n a
C a r o lin a ”
“A rm a z é m ”
r 4 :w w w . g e o c itie s .c o m /o m e lh o r d e m im /
le t r a s . h t m # 2 3
r 5 :w w w . g e o c itie s .c o m /o m e lh o r d e m im /
le t r a s . h t m # 5
in s tâ n c ia d e
s u b c la s s e d e
r 6 :w w w .te r r a v is ta .p t/e n s e a d a /4 1 0 4 /
s u b p r o p r ie d a d e d e
a n a c a r o lin a /le tr a s c d 1 . h t m
Figura 13: Modelagem do cenário
6.1 Exemplos de consultas para o cenário modelado
As consultas abaixo, formuladas em RQL, ilustram a aplicação aqui modelada.
Consulta 1. Encontre todas as propriedades que são especialistas da propriedade faz (ou de suas subpropriedades) e
têm como domínio a classe Compositor.
select @P, $Y from {:Compositor}@P{:$Y} where @P <= faz
<?xml version="1.0" encoding="ISO-8859-1" ?>
<RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Bag ID="bag004">
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="faz" />
<rdf:li rdf:type="class" rdf:resource="Arte" />
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="faz" />
<rdf:li rdf:type="class" rdf:resource="Musica" />
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="faz" />
<rdf:li rdf:type="class" rdf:resource="Livro" />
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="compoe" />
<rdf:li rdf:type="class" rdf:resource="Musica" />
</rdf:Seq>
</rdf:li>
</rdf:Bag>
</RDF>
Consulta 2. Encontre as propriedades que tem como domínio a classe RecursoExterno e seu respectivo alcance.
select
@P, range(@P) from ExtResource{:$Y}.@P{:$$X}
<?xml version="1.0" ?>
<RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Bag ID="bag005">
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="ano_criacao " />
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="literal" rdf:resource="integer" />
</rdf:Alt>
</rdf:li>
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="tipo_arquivo" />
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="literal" rdf:resource="string" />
</rdf:Alt>
</rdf:li>
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li rdf:type="property" rdf:resource="titulo" />
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="literal" rdf:resource="string" />
</rdf:Alt>
</rdf:li>
</rdf:Seq>
</rdf:li>
</rdf:Bag>
</RDF>
Consulta3. Encontre todas as informações sobre www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm.
select X, $Z, @P, Y, $$W from {X:$Z}@P{Y:$$W} where X like "[^
www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm]*
www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm *" or Y like "[^
www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm]*
www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm *"
<?xml version="1.0" ?>
<RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Bag ID="bag006">
<rdf:li>
<rdf:Seq>
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="resource"
rdf:resource="www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm" />
</rdf:Alt>
</rdf:li>
<rdf:li rdf:type="class" rdf:resource="RecursoExterno" />
<rdf:li rdf:type="property" rdf:resource="titulo" />
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="string">
Ana Carolina
</rdf:li>
</rdf:Alt>
</rdf:li>
</rdf:Seq>
</rdf:li>
<rdf:li>
<rdf:Seq>
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="resource"
rdf:resource="http://www.geocities.com/omelhordemim/letras.htm#5" />
</rdf:Alt>
</rdf:li>
<rdf:li rdf:type="class" rdf:resource="Musica" />
<rdf:li rdf:type="property" rdf:resource="exibida" />
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="resource"
rdf:resource=" www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm" />
</rdf:Alt>
</rdf:li>
<rdf:li>
<rdf:Alt>
<rdf:li rdf:type="class" rdf:resource="Album" />
</rdf:Alt>
</rdf:li>
</rdf:Seq>
</rdf:li>
</rdf:Bag>
</RDF>
7 Conclusão e considerações finais
O objetivo deste artigo foi o de verificar as funcionalidades da RDF como suporte à Web Semântica. Isso foi feito
seguindo um caminho por passos. O primeiro deles foi conhecer um pouco mais da Web Semântica, sua arquitetura,
objetivos, aplicações etc., descobrindo qual o papel da RDF em todo esse contexto. Depois disso, se fez necessário
ter uma noção da sintaxe da RDF e da RDF Schema. Para tal foi consultado o W3C que tem concentrado esforços
em padronizar tudo o que é concernente à Web. Através do W3C buscou-se acesso à especificação da linguagem
RDF, cujo status é o de recomendação, e também à especificação da RDF Schema, atualmente candidata a
recomendação.
Para adequação ao estado-da-arte, este artigo procurou conhecer um pouco mais sobre o que já foi feito no
mundo com respeito a Web Semântica, particularmente as linguagens RDF e RDF Schema. Para tal, se encontrou na
Web vários softwares desenvolvidos que dão suporte à linguagem RDF, dos quais alguns foram especificados na
seção 3; diversos textos referentes ao assunto, alguns registrados como referência neste artigo; várias organizações
oficiais exclusivamente dedicadas ou mobilizadas a promover a Web Semântica, entre outros recursos.
Na fase seguinte, o artigo modelou um cenário para uma aplicação de forma que se pudesse entender mais
claramente a sintaxe da RDF e RDF Schema. Para isso foi feito um modelo em forma de grafo, prototipado seu
código RDF/XML e realizado consultas em termos da linguagem RQL para o cenário assim estabelecido. Os
softwares utilizados, na verdade, ainda estão em fase de construção e testes (versões beta) e, por isso, possuem
grandes limitações. Um editor testado neste artigo foi o RDFedt e um compilador foi o SiRPAC. O RDFSuite,
ambiente de ferramentas para apoio à RDF, entretanto, foi quem auxiliou sobremaneira o entendimento da RDF
Schema, através de sua linguagem de consulta – a RQL.
Apesar da RDF ser uma recomendação do W3C e haver muitos esforços concentrados em sua evolução, há ainda
muito por se fazer para que ela esteja consolidada. Soluções práticas incluem: (a) a derivação de RDF a partir de
fontes XML; (b) a convergência de mapas de tópicos (topic maps) com RDF; (c) a emergência de “motores” e de
banco de dados em RDF; e (d) interfaces com o usuário (gerais ou específicas) para dados RDF, implementando
dessa forma novos websites. Estas soluções ficam aqui consideradas como sugestões para trabalhos futuros.
As linguagens para a Web Semântica, em geral, ainda são pouco conhecidas da comunidade afim, até porque
tratam-se de linguagens muito novas, recentemente tornadas padrão ou ainda em vias disso. Quanto às referências
bibliográficas, ainda existem poucos textos em português, a maioria das referências encontrada foi em língua inglesa.
Deve-se considerar ainda que foram tratados aqui somente os níveis de dados e de esquema da arquitetura de
linguagens da Web Semântica. Esta arquitetura prevê ainda um nível lógico, com as linguagens DAML+OIL e outras
linguagens mais específicas como, por exemplo, a DAML-R para tratamento de regras, que irá agregar mecanismos
de provas, promovendo assim a credibilidade da Web. Juntamente com a infra-estrutura básica promovida pela
HTML e XML, essas linguagens compõem o contexto da nova geração Web.
O estudo focalizado aqui deve se inserir nesse contexto maior, para sua completude. Ainda como sugestão de
trabalhos futuros, vale considerar a Web Semântica nos diversos níveis de sua arquitetura, complementando a
abordagem aqui tratada. Maior atenção deve ser dada, entretanto, ao nível lógico, pela sua complexidade inerente.
Agradecimentos
Os autores agradecem a leitura e as críticas das professoras doutoras Fernanda Cláudia Alves Campos e Regina
Maria Maciel Braga, que muito contribuíram para a versão em que se encontra este artigo. A primeira autora
agradece, também, o suporte financeiro recebido da Coordenação de Desenvolvimento da Pesquisa através do VIII
Programa de Bolsas de Conclusão de Curso de Graduação da UFJF, exclusivo para a realização deste trabalho.
Referências bibliográficas
[Alexaki, 2001]
Alexaki, S. et al. The RDFSuite: managing voluminous RDF description bases.
In: International Workshop on The Semantic Web, 2, 2001, Hong Kong. Proceedings…, 2001
[Berners-Lee, 1998] Berners-Lee, T. Semantic Web road map, 1998. (Nota interna, W3C). Disponível em:
<http://www.w3c.org/DesignIssues/Semantic.html>. Acesso em: 11 junho 2001.
[Berners-Lee, 1999] Berners-Lee, T. Weaving the Web: the original design and ultimate destiny of the World
Wide Web by its inventor. 1.ed. San Francisco, CA: HarperSanFrancisco, 1999. 226p.
[Berners-Lee, 2001] Berners-Lee, T.; Hendler, J.; Lassila, O. The Semantic Web. Scientific American, New York,
May 2001.
[Bray, 1999]
Bray, T.; Hollander, D.; Layman, A. Namespaces in XML, 14 Jan 1999. (Candidata a
recomendação do W3C). Disponível em: < http://www.w3.org/TR/REC-xml-names/>.
Acesso em: 07 julho 2001.
[Bray, 2000]
Bray, T. et al. (eds.). Extensible Markup Language (XML) 1.0, 2.ed., 6 Oct 2000.
(Recomendação do W3C). Disponível em: <http://www.w3c.org/TR/REC-xml>.
Acesso em: 15 março 2001.
[Brickley, 2000]
Brickley, D.; Guha, R..V. (eds.). Resource Description Framework (RDF) Schema
specification 1.0 27 março 2000, 1.ed., 2000. (Recomendação do W3C). Disponível em:
<http://www.w3.org/TR/2000/CR-rdf-schema-20000327>. Acesso em: 12 abril 2001.
[Broekstra, 2000]
Broekstra, J. et al. Adding formal semantics to the Web: building on top of RDF Schema.
In: ECDL 2000 Workshop on the Semantic Web, 1, 2000, Lisboa. Electronic Proceedings...
Disponível em <http://www.ics.forth.gr/proj/isst/SemWeb/proceedings/session2-2/paper.pdf>
Acesso em: 18 abril 2001.
[Connolly, 1997]
[DAML, 2001]
[DCMI, 2001]
[Guha, 2001]
[Horrocks, 2001]
[Lassila, 1999]
[Lima, 2001]
[Winkler, 2001]
[W3C, 2001]
Connolly, D. Overview of SGML Resources, 1997.
Disponível em: <http://www.w3c.org/MarkUp/SGML/>. Acesso em 5 julho de 2001.
The DARPA Agent Markup Language Homepage. Operada pelo DARPA Technology
Integration Center, Arlington, VA, EUA. Disponível em: <http://www.daml.org>.
Acesso em: 01 junho 2001.
Dublin Core Metadata Iniciative, 2001, Disponível em: <http://dublincore.org>.
Acesso em: 29 junho 2001
Guha, R.V. rdfDB: na RDF database, 2001. Disponível em: <http://web1.guha.com/rdfbd>.
Acesso em: 18 junho 2001.
Horrocks, I. et al. DAML+OIL (march 2001). Disponível em:
<http://www.daml.org/2001/03/daml+oil-index>. Acesso em: 01 junho 2001.
Lassila, O.; Swick, R. (eds.). Resource Description Framework (RDF) model and syntax
specification.1.0, 22 Feb 1999. (Recomendação do W3C). Disponível em:
<http://www.w3c.org/TR/REC-rdf-syntax>. Acesso em: 12 abril 2001.
Lima, T. Entrelaçamentos semânticos modelando a integração da informação na Web
Semântica. São Carlos, 2001. 117f. Tese (Doutorado em Ciência da Computação) – Instituto
de Ciências Matemáticas e de Computação, Universidade de São Paulo.
Winkler, J. RDFedt 1.0.2001. Disponível em: < http://www.jan-winkler.de/dev/e_rdfe.htm>.
Acesso em: 07 maio 2001.
World Wide Web Consortium. Hospedada pelo MIT/LCS:USA; INRIA: França; e Keio
University: Japão. Disponível em: <http://www.w3c.org>. Acesso em: 29 junho 2001.
Anexo : Código RDF/XML do cenário modelado
<?xml version="1.0" ?>
<rdf:RDF xml:lang="en"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns="">
<rdfs:Class rdf:ID="Artista" />
<rdfs:Class rdf:ID="Arte" />
<rdfs:Class rdf:ID="Album" />
<rdfs:Class rdf:ID="Compositor">
<rdfs:subClassOf rdf:resource="#Artista" />
</rdfs:Class>
<rdfs:Class rdf:ID="Escritor">
<rdfs:subClassOf rdf:resource="#Artista" />
</rdfs:Class>
<rdfs:Class rdf:ID="Musica">
<rdfs:subClassOf rdf:resource="#Arte" />
</rdfs:Class>
<rdfs:Class rdf:ID="Livro">
<rdfs:subClassOf rdf:resource="#Arte" />
</rdfs:Class>
<rdf:Property rdf:ID="faz">
<rdfs:domain rdf:resource="#Artista" />
<rdfs:range rdf:resource="#Arte" />
</rdf:Property>
<rdf:Property rdf:ID="compoe">
<rdfs:domain rdf:resource="#Compositor" />
<rdfs:range rdf:resource="#Musica" />
<rdfs:subPropertyOf rdf:resource="#faz" />
</rdf:Property>
<rdf:Property rdf:ID="escreve">
<rdfs:domain rdf:resource="#Escritor" />
<rdfs:range rdf:resource="#Livro" />
<rdfs:subPropertyOf rdf:resource="#faz" />
</rdf:Property>
<rdf:Property rdf:ID="exibida">
<rdfs:domain rdf:resource="#Arte" />
<rdfs:range rdf:resource="#Album" />
</rdf:Property>
<rdf:Property rdf:ID="feita_em_parceria">
<rdfs:domain rdf:resource="#Musica" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdf:Property rdf:ID="tem_genero">
<rdfs:domain rdf:resource="#Livro" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdf:Property rdf:ID="nome">
<rdfs:domain rdf:resource="#Artista" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdf:Property rdf:ID="sobrenome">
<rdfs:domain rdf:resource="#Artista"/>
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdfs:Class rdf:ID="RecursoExterno" />
<rdf:Property rdf:ID="titulo">
<rdfs:domain rdf:resource="#RecursoExterno" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdf:Property rdf:ID="tipo_arquivo">
<rdfs:domain rdf:resource="#RecursoExterno" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<rdf:Property rdf:ID="ano_criacao">
<rdfs:domain rdf:resource="#RecursoExterno" />
<rdfs:range rdf:resource="http://www.w3.org/rdf-datatypes.xsd#String" />
</rdf:Property>
<Compositor rdf:ID="biograf">
<nome> Ana </nome>
<sobrenome> Carolina </sobrenome>
<compoe>
<Musica rdf:about="http://www.geocities.com/omelhordemim/letras.htm#5">
<exibida>
<Album
rdf:about="http://www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm" />
</exibida>
</Musica>
</compoe>
<compoe>
<Musica rdf:about="http://www.geocities.com/omelhordemim/letras.htm#23">
<parceria> Totonho Villeroy </parceria>
</Musica>
</compoe>
</Compositor>
<Escritor rdf:ID="opoeta">
<escreve>
<Livro rdf:about="www.ceem.ufjf.br/poemas.htm">
<genero> Poesias </genero>
</Livro>
</escreve>
</Escritor>
<RecursoExterno rdf:about="www.terravista.pt/enseada/4104/anacarolina/letrascd1.htm">
<titulo> Ana Carolina </titulo>
</RecursoExterno>
<RecursoExterno rdf:about="www.geocities.com/omelhordemin/letras.htm#5">
<titulo> Armazém </titulo>
</RecursoExterno>
<RecursoExterno rdf:about="www.geocities.com/omelhordemin/letras.htm#23">
<titulo> Confesso </titulo>
</RecursoExterno>
<RecursoExterno rdf:about="www.ceem.ufjf.br/poemas.htm">
<titulo> Poemas </titulo>
<ano_criacao> 1930 </ano_criacao>
</RecursoExterno>
</rdf:RDF>
Download

RDF e RDFS na Infra-estrutura de Suporte à Web Semântica