Rio de Janeiro, 5 de julho de 2013
Leonardo Souza
lsouza@amtera.com.br
Linked Data
● Conjunto de princípios, tecnologias e padrões da Web
para publicação, compartilhamento e reuso dos dados
em escala.
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?
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)
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.
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>
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.
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);
Web API
● A estruturação e padronização trazida pelas Web APIs são
benéficas mas demandam muito esforço de integração.
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.
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.
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;
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;
Rotulando o mundo
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;
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;
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.
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>
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
Grafo RDF
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;
LOD Cloud - 2007
LOD Cloud - 2008
LOD Cloud - 2009
LOD Cloud - 2010
LOD Cloud - 2011
Serializações RDF
● XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="http://www.w3.org/">
<dc:title>World Wide Web Consortium</dc:title>
</rdf:Description>
</rdf:RDF>
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
<http://www.w3.org/> dc:title "World Wide Web Consortium".
● Notation 3 (N3)
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.
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> .
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).
“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
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;
Exemplo - 303 URIs
● Humano acessando http://dbpedia.org/resource/Tim_Berners-Lee
$ curl --verbose -H "Accept: text/html" -X GET "http://dbpedia.org/resource/Tim_Berners-Lee"
* About to connect() to dbpedia.org port 80 (#0)
* Trying 194.109.129.58... connected
> GET /resource/Tim_Berners-Lee HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23
librtmp/2.3
> Host: dbpedia.org
> Accept: text/html
>
< HTTP/1.1 303 See Other
< Date: Thu, 04 Jul 2013 00:51:15 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Connection: keep-alive
< Server: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDB
< Accept-Ranges: bytes
< Location: http://dbpedia.org/page/Tim_Berners-Lee
<
Exemplo - 303 URIs
● Máquina/agente acessando http://dbpedia.org/resource/Tim_Berners-Lee
$ curl --verbose -H "Accept: application/rdf+xml" -X GET "http://dbpedia.org/resource/Tim_Berners-Lee"
* About to connect() to dbpedia.org port 80 (#0)
* Trying 194.109.129.58... connected
> GET /resource/Tim_Berners-Lee HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: dbpedia.org
> Accept: application/rdf+xml
>
< HTTP/1.1 303 See Other
< Date: Thu, 04 Jul 2013 00:56:35 GMT
< Content-Type: application/rdf+xml; qs=0.95
< Content-Length: 0
< Connection: keep-alive
< Server: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDB
< Accept-Ranges: bytes
< TCN: choice
< Vary: negotiate,accept
< Link: <http://mementoarchive.lanl.gov/dbpedia/timegate/http://dbpedia.org/resource/Tim_Berners-Lee>;
rel="timegate"
< Location: http://dbpedia.org/data/Tim_Berners-Lee.xml
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….
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;
Hash URI
● Também é possível usar content negotiation com hash URIs;
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> ...
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;
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.
}
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
Resultado
operadora callret-1
http://dbpedia.org/resource/Petrobras 1006
http://dbpedia.org/resource/Shell 17
http://dbpedia.org/resource/BP 15
http://data.amtera.com.br/anp/ontology/Ogx 19
http://dbpedia.org/resource/Texaco 2
http://dbpedia.org/resource/Anadarko_Petroleum_Corporation 5
http://dbpedia.org/resource/Statoil 7
http://dbpedia.org/resource/Total_S.A. 6
http://dbpedia.org/resource/Chevron_Corporation 7
http://dbpedia.org/resource/Repsol_YPF 2
http://dbpedia.org/resource/Queiroz_Galv%C3%A3o 1
http://dbpedia.org/resource/Unocal_Corporation 2
http://dbpedia.org/resource/Hess_Corporation 1
SPARQL (Exemplo)
● Consultando reponsável pela operadora;
● O join está sendo feito com um dataset externo, a dbpedia;
PREFIX amtera-owl: <http://data.amtera.com.br/anp/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?operadora ?leader
WHERE {
GRAPH <http://data.amtera.com.br/anp#> {
?poco amtera-owl:Operadora ?operadora .
}
SERVICE <http://dbpedia.org/sparql> {
?operadora dbpedia-owl:keyPerson ?leader .
}
}
Resultados
operadora leader
http://dbpedia.org/resource/Koch_Industries http://dbpedia.org/resource/Charles_G._Koch
http://dbpedia.org/resource/Koch_Industries http://dbpedia.org/resource/David_H._Koch
http://dbpedia.org/resource/Unocal_Corporation http://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Unocal_Corporation http://dbpedia.org/resource/Charles_R._Williamson
http://dbpedia.org/resource/BP http://dbpedia.org/resource/Bob_Dudley
http://dbpedia.org/resource/BP http://dbpedia.org/resource/Carl-Henric_Svanberg
http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Chief_financial_officer
http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Christophe_de_Margerie
http://dbpedia.org/resource/Repsol_YPF http://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Repsol_YPF http://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Chevron_Corporation http://dbpedia.org/resource/John_S._Watson_(Chevron)
http://dbpedia.org/resource/Queiroz_Galv%C3%A3o http://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Anadarko_Petroleum_Corporation http://dbpedia.org/resource/President
http://dbpedia.org/resource/Anadarko_Petroleum_Corporation http://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Eni http://dbpedia.org/resource/Paolo_Scaroni
http://dbpedia.org/resource/Eni http://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Petrobras http://dbpedia.org/resource/Chief_financial_officer
http://dbpedia.org/resource/Petrobras http://dbpedia.org/resource/Maria_das_Gra%C3%A7as_Foster
http://dbpedia.org/resource/Statoil http://dbpedia.org/resource/Helge_Lund
http://dbpedia.org/resource/Statoil http://dbpedia.org/resource/Svein_Rennemo
http://dbpedia.org/resource/Galp_Energia http://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Galp_Energia http://dbpedia.org/resource/Chairman
SPARQL (Exemplo)
PREFIX amtera-owl: <http://data.amtera.com.br/anp/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?operadora ?num_funcionarios
WHERE {
GRAPH <http://data.amtera.com.br/anp#> {
?poco amtera-owl:Operadora ?operadora .
}
SERVICE <http://dbpedia.org/sparql> {
?operadora dbpprop:numEmployees ?num_funcionarios
}
}
● Consultando número de funcionários por operadora, join externo com a
dbpedia;
Resultados
operadora nfuncionarios
http://dbpedia.org/resource/Koch_Industries 70000
http://dbpedia.org/resource/Unocal_Corporation 6400
http://dbpedia.org/resource/BP 79700
http://dbpedia.org/resource/Total_S.A. 92855
http://dbpedia.org/resource/Repsol_YPF 43300
http://dbpedia.org/resource/Chevron_Corporation 62000
http://dbpedia.org/resource/Queiroz_Galv%C3%A3o 30
http://dbpedia.org/resource/Anadarko_Petroleum_Corpo
ration
4400
http://dbpedia.org/resource/Eni 79940
http://dbpedia.org/resource/Hess_Corporation 11610
http://dbpedia.org/resource/Petrobras 80497
http://dbpedia.org/resource/Statoil 30340
http://dbpedia.org/resource/Galp_Energia 7310
http://dbpedia.org/resource/Wintershall ~1.700
● Obrigado. Dúvidas?
Referências
● [1] http://en.wikipedia.org/wiki/Linked_data
● [2] http://microformats.org/
● [3] http://www.mashape.com
● [4] http://programmableweb.com
● [5] http://en.wikipedia.org/wiki/World_Wide_Web
● [6] http://www.w3.org/DesignIssues/LinkedData.html
● [7] https://en.wikipedia.org/wiki/Content_negotiation
● [8] http://en.wikipedia.org/wiki/HTTP_303
● [9] http://en.wikipedia.org/wiki/Resource_Description_Framework
● [10] http://www.w3.org/standards/semanticweb/ontology
● [11] http://www.w3.org/TR/cooluris/
● [12] http://en.wikipedia.org/wiki/SPARQL
Palestra Introdução a Linked Data

Palestra Introdução a Linked Data

  • 1.
    Rio de Janeiro,5 de julho de 2013 Leonardo Souza lsouza@amtera.com.br
  • 2.
    Linked Data ● Conjuntode princípios, tecnologias e padrões da Web para publicação, compartilhamento e reuso dos dados em escala.
  • 3.
    Motivação ● Explosão deinformaçõ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 facilitao 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 microformatosaliviam 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 deuso 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 ● Dadospublicados 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 ● Aestruturação e padronização trazida pelas Web APIs são benéficas mas demandam muito esforço de integração.
  • 10.
    Hyperlinks ● As WebAPIs 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 HTMLnã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;
  • 14.
  • 15.
    RDF ● Dados publicadosna 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 dadosRDF ● 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 ● Osvocabulá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
  • 20.
  • 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;
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    Serializações RDF ● XML <?xmlversion="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://www.w3.org/"> <dc:title>World Wide Web Consortium</dc:title> </rdf:Description> </rdf:RDF> @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. <http://www.w3.org/> dc:title "World Wide Web Consortium". ● Notation 3 (N3)
  • 28.
    Tipos de triplasRDF ● 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 derelacionamentos: 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 devocabulá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 ● QualquerHTTP 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 ● Infelizmenteobjetos 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;
  • 33.
    Exemplo - 303URIs ● Humano acessando http://dbpedia.org/resource/Tim_Berners-Lee $ curl --verbose -H "Accept: text/html" -X GET "http://dbpedia.org/resource/Tim_Berners-Lee" * About to connect() to dbpedia.org port 80 (#0) * Trying 194.109.129.58... connected > GET /resource/Tim_Berners-Lee HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: dbpedia.org > Accept: text/html > < HTTP/1.1 303 See Other < Date: Thu, 04 Jul 2013 00:51:15 GMT < Content-Type: text/html; charset=UTF-8 < Content-Length: 0 < Connection: keep-alive < Server: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDB < Accept-Ranges: bytes < Location: http://dbpedia.org/page/Tim_Berners-Lee <
  • 34.
    Exemplo - 303URIs ● Máquina/agente acessando http://dbpedia.org/resource/Tim_Berners-Lee $ curl --verbose -H "Accept: application/rdf+xml" -X GET "http://dbpedia.org/resource/Tim_Berners-Lee" * About to connect() to dbpedia.org port 80 (#0) * Trying 194.109.129.58... connected > GET /resource/Tim_Berners-Lee HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: dbpedia.org > Accept: application/rdf+xml > < HTTP/1.1 303 See Other < Date: Thu, 04 Jul 2013 00:56:35 GMT < Content-Type: application/rdf+xml; qs=0.95 < Content-Length: 0 < Connection: keep-alive < Server: Virtuoso/07.00.3203 (Linux) i686-generic-linux-glibc212-64 VDB < Accept-Ranges: bytes < TCN: choice < Vary: negotiate,accept < Link: <http://mementoarchive.lanl.gov/dbpedia/timegate/http://dbpedia.org/resource/Tim_Berners-Lee>; rel="timegate" < Location: http://dbpedia.org/data/Tim_Berners-Lee.xml
  • 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 opensourcepara publicação de dados armazenados em banco de dados relacional ; ● Suporte para Oracle, MySQL, PostgreSQL, SQL Server, HSQLDB, Interbase/Firebird;
  • 40.
    SPARQL ● SPARQL Protocoland 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) ● Consultandototal 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
  • 42.
    Resultado operadora callret-1 http://dbpedia.org/resource/Petrobras 1006 http://dbpedia.org/resource/Shell17 http://dbpedia.org/resource/BP 15 http://data.amtera.com.br/anp/ontology/Ogx 19 http://dbpedia.org/resource/Texaco 2 http://dbpedia.org/resource/Anadarko_Petroleum_Corporation 5 http://dbpedia.org/resource/Statoil 7 http://dbpedia.org/resource/Total_S.A. 6 http://dbpedia.org/resource/Chevron_Corporation 7 http://dbpedia.org/resource/Repsol_YPF 2 http://dbpedia.org/resource/Queiroz_Galv%C3%A3o 1 http://dbpedia.org/resource/Unocal_Corporation 2 http://dbpedia.org/resource/Hess_Corporation 1
  • 43.
    SPARQL (Exemplo) ● Consultandoreponsável pela operadora; ● O join está sendo feito com um dataset externo, a dbpedia; PREFIX amtera-owl: <http://data.amtera.com.br/anp/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT DISTINCT ?operadora ?leader WHERE { GRAPH <http://data.amtera.com.br/anp#> { ?poco amtera-owl:Operadora ?operadora . } SERVICE <http://dbpedia.org/sparql> { ?operadora dbpedia-owl:keyPerson ?leader . } }
  • 44.
    Resultados operadora leader http://dbpedia.org/resource/Koch_Industries http://dbpedia.org/resource/Charles_G._Koch http://dbpedia.org/resource/Koch_Industrieshttp://dbpedia.org/resource/David_H._Koch http://dbpedia.org/resource/Unocal_Corporation http://dbpedia.org/resource/Chairman http://dbpedia.org/resource/Unocal_Corporation http://dbpedia.org/resource/Charles_R._Williamson http://dbpedia.org/resource/BP http://dbpedia.org/resource/Bob_Dudley http://dbpedia.org/resource/BP http://dbpedia.org/resource/Carl-Henric_Svanberg http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Chief_executive_officer http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Chief_financial_officer http://dbpedia.org/resource/Total_S.A. http://dbpedia.org/resource/Christophe_de_Margerie http://dbpedia.org/resource/Repsol_YPF http://dbpedia.org/resource/Chief_executive_officer http://dbpedia.org/resource/Repsol_YPF http://dbpedia.org/resource/Chairman http://dbpedia.org/resource/Chevron_Corporation http://dbpedia.org/resource/John_S._Watson_(Chevron) http://dbpedia.org/resource/Queiroz_Galv%C3%A3o http://dbpedia.org/resource/Chief_executive_officer http://dbpedia.org/resource/Anadarko_Petroleum_Corporation http://dbpedia.org/resource/President http://dbpedia.org/resource/Anadarko_Petroleum_Corporation http://dbpedia.org/resource/Chairman http://dbpedia.org/resource/Eni http://dbpedia.org/resource/Paolo_Scaroni http://dbpedia.org/resource/Eni http://dbpedia.org/resource/Chairman http://dbpedia.org/resource/Petrobras http://dbpedia.org/resource/Chief_financial_officer http://dbpedia.org/resource/Petrobras http://dbpedia.org/resource/Maria_das_Gra%C3%A7as_Foster http://dbpedia.org/resource/Statoil http://dbpedia.org/resource/Helge_Lund http://dbpedia.org/resource/Statoil http://dbpedia.org/resource/Svein_Rennemo http://dbpedia.org/resource/Galp_Energia http://dbpedia.org/resource/Chief_executive_officer http://dbpedia.org/resource/Galp_Energia http://dbpedia.org/resource/Chairman
  • 45.
    SPARQL (Exemplo) PREFIX amtera-owl:<http://data.amtera.com.br/anp/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT DISTINCT ?operadora ?num_funcionarios WHERE { GRAPH <http://data.amtera.com.br/anp#> { ?poco amtera-owl:Operadora ?operadora . } SERVICE <http://dbpedia.org/sparql> { ?operadora dbpprop:numEmployees ?num_funcionarios } } ● Consultando número de funcionários por operadora, join externo com a dbpedia;
  • 46.
    Resultados operadora nfuncionarios http://dbpedia.org/resource/Koch_Industries 70000 http://dbpedia.org/resource/Unocal_Corporation6400 http://dbpedia.org/resource/BP 79700 http://dbpedia.org/resource/Total_S.A. 92855 http://dbpedia.org/resource/Repsol_YPF 43300 http://dbpedia.org/resource/Chevron_Corporation 62000 http://dbpedia.org/resource/Queiroz_Galv%C3%A3o 30 http://dbpedia.org/resource/Anadarko_Petroleum_Corpo ration 4400 http://dbpedia.org/resource/Eni 79940 http://dbpedia.org/resource/Hess_Corporation 11610 http://dbpedia.org/resource/Petrobras 80497 http://dbpedia.org/resource/Statoil 30340 http://dbpedia.org/resource/Galp_Energia 7310 http://dbpedia.org/resource/Wintershall ~1.700
  • 47.
  • 48.
    Referências ● [1] http://en.wikipedia.org/wiki/Linked_data ●[2] http://microformats.org/ ● [3] http://www.mashape.com ● [4] http://programmableweb.com ● [5] http://en.wikipedia.org/wiki/World_Wide_Web ● [6] http://www.w3.org/DesignIssues/LinkedData.html ● [7] https://en.wikipedia.org/wiki/Content_negotiation ● [8] http://en.wikipedia.org/wiki/HTTP_303 ● [9] http://en.wikipedia.org/wiki/Resource_Description_Framework ● [10] http://www.w3.org/standards/semanticweb/ontology ● [11] http://www.w3.org/TR/cooluris/ ● [12] http://en.wikipedia.org/wiki/SPARQL