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>