O documento discute os princípios do Linked Data para publicação e compartilhamento de dados na Web. Ele explica como os Linked Data utilizam URIs para identificar recursos e o modelo RDF para estruturar as informações, permitindo a integração de dados de diferentes fontes através de links entre os recursos.
Linked Data - Princípios e Tecnologias para Publicação e Reuso de Dados na Web
1. Rio de Janeiro, 5 de julho de 2013
Leonardo Souza
lsouza@amtera.com.br
2. Linked Data
● Conjunto de princípios, tecnologias e padrões da Web
para publicação, compartilhamento e reuso dos dados
em escala.
3. Motivação
● Explosão de informações. Nos dias de hoje encontramos facilmente
na web dados sobre o best seller mais vendido, previsão do tempo,
ingressos para o show do fim de semana, gastos do governo, dados
sobre pesquisas científicas, etc.
● Esses fatos nos remetem às seguintes questões:
– Como prover o reuso desses dados?
– Como descubro novos dados ou novas fontes?
– Como integrar essas fontes de dados distribuídas?
4. Histórico
● “Habemus Web”, Tim Berners-Lee criou a Web of Documents
– Sistema de documentos hipertexto interligados e
acessados através da internet. Esses documentos
podem conter textos, imagens, vídeos, recursos
multimídia em geral, nos quais os usuários podem
navegar através de hiperlinks.
● Deu origem a tecnologias essenciais da Web:
– Uniform Resource Locator (URL)
– HyperText Markup Language (HTML)
– HyperText Transfer Protocol (HTTP)
5. Estrutura
● Estrutura facilita o reuso. Quanto mais regular e definido for o
dado, mais fácil se torna a construção de ferramentas para
processamento automático.
● A linguagem HTML foi concebida para expressar a forma como
o dado é apresentado para o usuário. As aplicações precisam
de muito esforço para extrair o dado estruturado.
● Muitos sites são construídos a partir de dados estruturados
mas é muito difícil reconstruir a estrutura original do dado
através da página HTML.
6. Microformatos
● Os microformatos aliviam um pouco esse problema. São
metadados embutidos no HTML para dar significado as
entidades como pessoas, organizações, eventos, etc.
● Exemplo de uso do microformato hCard
<ul>
<li>Leonardo Souza</li>
<li>Amtera Semantic Technologies</li>
<li>+552198777081</li>
<li><a href="http://www.amtera.com.br">Site</a></li>
</ul>
<ul class=”vcard”>
<li class=”fn”>Leonardo Souza</li>
<li class=”org”>Amtera Semantic Technologies</li>
<li class=”tel”>+552198777081</li>
<li><a class=”url” href="http://www.amtera.com.br">Site</a></li>
</ul>
7. Microformatos
● Exemplo de uso do microformato geo:
The birds roosted at
<span class="geo">
<span class="latitude">52.48</span>,
<span class="longitude">-1.89</span>
</span>
● Outros microformatos: adr, geo, hCalendar, hAtom, hMedia,
hRecipe, hResume, etc;
● Microformatos são limitados. Em geral o vocabulário é
pequeno e não expressa bem as relações entre as entidades
descritas. Não são adequados para a publicação de dados em
geral.
8. Web API
● Dados publicados através de serviços web normalmente são
bem estruturados. O uso do protocolo HTTP é o padrão
utilizado;
● Empresas como a Amazon e Facebook expõem seus dados
através de serviços na web;
● Os formatos estruturados mais comuns são XML e JSON que
são suportados pela grande maioria das linguagens de
programação;
● Empresas como a Mashape facilitam a publicação e o acesso a
uma variedade de Web APIs em um marketplace;
● Com a explosão de APIs na web o número de aplicações que
integram várias fontes de dados (mashups) cresceu
rapidamente (ProgrammableWeb);
9. Web API
● A estruturação e padronização trazida pelas Web APIs são
benéficas mas demandam muito esforço de integração.
10. Hyperlinks
● As Web APIs trouxeram a estrutura necessária que facilita o
consumo dos dados de diferentes fontes, mas como ligamos os
dados de diferentes fontes?
● Documentos HTML referenciam outros documentos através do
elemento anchor que possui o atributo href. Esse é um padrão
da linguagem reconhecido pelos navegadores e que viabilizou
a web of documents;
● As Web APIs não possuem padrões equivalentes à âncora
HTML para ligar dados relacionados;
● Os identificadores disponibilizados através das Web APIs são
locais e não podem ser utilizados para ligar ou prover a
descoberta dos dados de forma global.
11. Rationale
● Documentos HTML não possuem a estrutura adequada para a
representação dos dados e seus relacionamentos;
● Os microformatos melhoram a representação dos dados
embutidos nos documentos HTML através de anotações
semânticas;
● Os microformatos possuem vocabulário limitado e não
representam adequadamente as relações.
● As Web APIs possuem estrutura adequada para a
representação dos dados;
● As Web APIs não possuem padrões equivalentes à âncora
HTML para ligar os dados relacionados e portanto não são
adequadas para a publicação e compartilhamento dos dados
de forma global.
12. Princípios Linked Data
● Proposto por Tim Berners-Lee [6]:
(1) Use URIs para dar nomes as coisas;
(2) Use HTTP URIs para que esses nomes possam ser
acessados;
(3) Quando uma URI é acessada, responda com dados
úteis, utilizando padrões da web;
(4) Inclua links para outras URIs para facilitar a
descoberta de novos dados;
13. Super Chave Primária
● A arquitetura Linked Data reutiliza a infraestrutura da web of documents e
os recursos identificados por uma HTTP URI podem ser pessoas, lugares,
eventos, relações, propriedades, documentos, etc;
● Entidades reais e conceitos do mundo são identificados universalmente,
temos uma super chave primária;
● As HTTP URIs não servem apenas como identificadores universais mas
também como o meio de acessar a informação que descreve o dado
identificado (dereference);
● http://dbpedia.org/resource/Tim_Berners-Lee
● O uso de HTTP URIs satisfaz os princípios 1 e 2;
15. RDF
● Dados publicados na Web devem seguir uma estrutura
padrão para permitir interoperabilidade entre as aplicações;
● Linked Data utiliza o modelo RDF [9] (Resource Description
Framework);
● RDF é um modelo de dados simples feito sob medida para a
arquitetura Web;
● RDF é uma recomendação W3C;
16. Modelo de dados RDF
● O modelo RDF representa o dado como uma série de enunciados
(statements) que descrevem recursos, tipicamente da web, na forma de
sujeito-predicado-objeto;
● Esses statements são chamados de triplas RDF;
● Uma coleção de triplas RDF podem ser visualizadas como um multigrafo
direcionado nomeado;
● Sujeito e predicado são sempre identificados por URIs;
● Objetos podem ou não ser identificados por URIs.
● Os predicados são representados por vocabulários que pode ser visto
como o schema do dado;
17. Vocabulários RDF
● Os vocabulários definem os conceitos e relações usados para
descrever um domínio ou área de conhecimento;
● Caracterizam os predicados que são usados para descrever os
dados e relações no modelo RDF;
● Vocabulários podem ser complexos com milhares de termos
(definições) ou bem simples com apenas dois termos;
● Vocabulários são representados pela linguagem RDF Schema.
18. RDF Schema - RDFS
● Conjunto de classes e propriedades, são elementos básicos para
construção dos vocabulários;
● RDF Schema está para o RDF assim como XML Schema está para o XML;
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
19. Tripla RDF
● Exemplo:
– Tim Berners-Lee inventou a World Wide Web
sujeito predicado objeto
http://dbpedia.org/resource/Tim_Berners-Lee
http://dbpedia.org/property/inventor
http://dbpedia.org/resource/World_Wide_Web
21. Linking Open Data - LOD
● Projeto W3C iniciado em 2007 com o objetivo de ligar dados de
fontes públicas e abertas;
– Wikipedia
– Wikibooks
– Geonames
– MusicBrainz
– Wordnet
– DBLP
● Interliga 295 datasets;
● 31 bilhões de triplas RDF
● 504 milhões de links RDF;
28. Tipos de triplas RDF
● Literal: Representa strings, inteiros, datas. Tipicamente usado para
descrever as propriedades de uma entidade (sujeito);
– dbpedia:Tim_Berners-Lee dbpedia-owl:birthDate "1955-06-08"^^xsd:date ;
– dbpprop:placeOfBirth "London, England"@en ;
● Links: Descrevem as relações entre duas entidades. Nesse caso três
URIs estão envolvidas.
29. Links
● Links de relacionamentos: Conectam fontes de dados distribuídas, podem
ligar com dados internos ou externos, equivalem às âncoras HTML na
arquitetura tradicional da web;
<http://richard.cyganiak.de/foaf.rdf#cygri>
foaf:based_near <http://ws.geonames.org/rdf?geonameId=2950159> .
● Links de identidade: Múltiplas HTTP URIs podem referenciar o mesmo
objeto, entidade ou pessoa, isso é permitido e incentivado na Web of Data,
assim podemos ter informações ou visões complementares sobre um
mesmo recurso da web, nessa arquitetura o ponto central de falha deixa de
existir;
dbpedia:Tim_Berners-Lee
owl:sameAs <http://www4.wiwiss.fu-berlin.de/dblp/resource/person/100007> .
30. Links
● Links de vocabulários [10]: Descrevem os tipos de relacionamentos. Auxiliam na
integração de diferentes fontes de dados. Em Linked Data o esquema é a fusão
da definição dos termos de diferentes vocabulários;
– A publicação de novos dados deve, sempre que possível, reusar
vocabulários consolidados (Foaf, Basic Geo, Gene Ontology, MeSH);
– O autor da publicação é livre para criar seu próprio vocabulário, para tal,
a URI do termo definido deve ser dereferenciável, e sempre que
possível mapeando para vocabulários externos equivalentes
(owl:sameAs, owl:equivalentProperty, owl:equivalentClass).
31. “Dereferenciando” URIs
● Qualquer HTTP URI deve ser “dereferenciável”;
● O usuário deve obter uma representação do dado ao acessar a URI através
do protocolo HTTP.
● Não importa se a URI identifica um documento HTML ou um conceito,
pessoa ou lugar do mundo;
● Content Negotiation [7]. Humanos obtêm documentos HTML e máquinas
documentos RDF;
– Accept: text/html
– Accept: application/rdf+xml
● Estratégias:
– 303 URI
– Hash URI
32. 303 URIs
● Infelizmente objetos reais não podem ser enviados através do
protocolo HTTP :(
● Ao invés de responder com o objeto real representado pela URI
o servidor HTTP responde o código 303 (see other [8]) que
indica a URI do documento que melhor descreve o objeto;
● O cliente faz uma segunda requisição HTTP para obter a
descrição do objeto;
35. Hash URI
$ curl --verbose -H "Accept: application/rdf+xml" -X GET "http://www.w3.org/2000/01/rdf-schema#type"
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/">
<owl:Ontology
rdf:about="http://www.w3.org/2000/01/rdf-schema#"
dc:title="The RDF Schema vocabulary (RDFS)"/>
<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Resource">
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
<rdfs:label>Resource</rdfs:label>
<rdfs:comment>The class resource, everything.</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Class">
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
<rdfs:label>Class</rdfs:label>
<rdfs:comment>The class of classes.</rdfs:comment>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
</rdfs:Class>
…snip….
36. 303 x Hash
● 303 URIs
– Requer 2 requisições HTTP;
– Pode retornar apenas o documento que descreve o recurso, na
verdade a URI retornada pode apontar para qualquer coisa.
– Ideal para grandes base de dados, onde uma única descrição
para todos os objetos se tornaria impeditivo;
● Hash URIs
– Somente 1 requisição HTTP.
– A descrição de todos os recursos que compartilham a mesma
URI base são retornadas na requisição;
– Ideal para bases pequenas, tipicamente descrição de
vocabulários e ontologias, onde o cliente precisa da base inteira;
37. Hash URI
● Também é possível usar content negotiation com hash URIs;
38. Cool URIs
● É importante diferenciar o recurso web sendo descrito do documento web
que o descreve;
● http://www.example.com/id/alice
● Identifica Alice, a pessoa
● http://www.example.com/people/alice
● Página web da Alice
● http://www.example.com/data/alice
● Documento RDF que descreve Alice
<http://www.example.com/id/alice>
foaf:page <http://www.example.com/people/alice>;
rdfs:isDefinedBy <http://www.example.com/data/alice>;
a foaf:Person;
foaf:name "Alice";
foaf:mbox <mailto:alice@example.com>;
...
<html xmlns="http://www.w3.org/1999/xhtml"
lang="en">
<head>
<title>Alice's Homepage</title>
<link rel="alternate" type="application/rdf+xml"
title="RDF Representation"
href="http://www.example.com/data/alice" />
</head> ...
39. D2RServer
● Solução opensource para publicação de dados armazenados
em banco de dados relacional ;
● Suporte para Oracle, MySQL, PostgreSQL, SQL Server,
HSQLDB, Interbase/Firebird;
40. SPARQL
● SPARQL Protocol and RDF Query Language;
● Linguagem de consulta para recuperação e manipulação dos
dados armazenados como RDF;
● É uma recomendação do W3C;
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?email
WHERE {
?person a foaf:Person.
?person foaf:name ?name.
?person foaf:mbox ?email.
}
41. SPARQL (Exemplo)
● Consultando total de poços por operadora:
PREFIX amtera-owl: <http://data.amtera.com.br/anp/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?operadora count(DISTINCT ?poco)
WHERE {
?poco amtera-owl:Operadora ?operadora .
?poco amtera-owl:Bacia dbpedia:Campos_Basin .
}
GROUP BY ?operadora