title: Uma Introdução a RDF e à API RDF de Jena

Prefácio

Este é um tutorial introdutório ao framework de descrição de recursos (RDF) e Jena, uma API Java para RDF. Ele é escrito para programadores que não estão familiarizados com RDF e que aprendem melhor através de prototipagem, ou, por outros motivos, desejam avançar rapidamente para a implementação. Familiaridade com XML e Java é assumido.

Introdução {# id=“ch-Introduction” }

Sentenças {# id=“ch-Statements” }

Escrita de RDF {# id=“ch-Writing-RDF” }

Leitura de RDF {# id=“ch-Reading-RDF” }

Controlando prefixos {# id=“ch-Prefixes” }

Definições explícitas de prefixos

Na sessão anterior, nós vimos que a saída XML declarou um prefixo namespace
vcard e o usou para abreviar URIs. Enquanto que RDF usa somente URIs completas, e não sua forma encurtada, Jena provê formas de controlar namespaces usados na saída com seu mapeamento de prefixos. Aqui vai um exemplo simples.

A saída deste fragmento são três blocos de RDF/XML, com três diferentes mapeamentos de prefixos. Primeiro o padrão, sem prefixos diferentes dos padrões:

Nós vimos que o namespace rdf é declarado automaticamente, já que são requeridos para tags como <RDF:rdf> e <rdf:resource>. Declarações de namespace são também necessárias para o uso das duas propriedades P e Q, mas já que seus namespaces não foram introduzidos no modelo, eles recebem nomes namespaces inventados j.0 e j.1.

O outro namespace ainda recebe o nome criado automaticamente, mas o nome nsA é agora usado nas tags de propriedades. Não há necessidade de que o nome do prefixo tenha alguma relação com as variáveis do código Jena:

Ambos os prefixos são usados na saída, e não houve a necessidade de prefixos gerados automaticamente.

Definições implícitas de prefixos

Assim como as declarações de prefixos definidas por chamadas a setNsPrefix, Jena vai lembrar-se dos prefixos que foram usados na entrada para model.read().

Você verá que os prefixos da entrada são preservados na saída. Todos os prefixos são escritos, mesmo se eles não forem usados em lugar algum. Você pode remover um prefixo com removeNsPrefix(String prefix) se você não o quiser na saída.

Pacotes Jena RDF {# id=“ch-Jena-RDF-Packages” }

Navegação em Modelos {# id=“ch-Navigating-a-Model” }

Consultas em Modelos {# id=“ch-Querying-a-Model” }

listStatements( S, P, O )

é equivalente a

listStatements( new SimpleSelector( S, P, O ) )

Operações em Modelos {# id=“ch-Operations-on-Models” }

Containers {# id=“ch-Containers” }

Mais sobre Literais e Datatypes {# id=“ch-More-about-Literals-and-Datatypes” }

Glossário {# id=“ch-Glossary” }