Rio de Janeiro, 5 de julho de 2013
Leonardo [email protected]
Linked Data
Conjunto de princpios, tecnologias e padres da Web para publicao, compartilhamento e reuso dos dados em escala.
Motivao
Exploso de informaes. Nos dias de hoje encontramos facilmente na web dados sobre o best seller mais vendido, previso do tempo, ingressos para o show do fim de semana, gastos do governo, dados sobre pesquisas cientficas, etc.
Esses fatos nos remetem s seguintes questes:Como prover o reuso desses dados?
Como descubro novos dados ou novas fontes?
Como integrar essas fontes de dados distribudas?
Histrico
Habemus Web, Tim Berners-Lee criou a Web of DocumentsSistema de documentos hipertexto interligados e acessados atravs da internet. Esses documentos podem conter textos, imagens, vdeos, recursos multimdia em geral, nos quais os usurios podem navegar atravs 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 fcil se torna a construo de ferramentas para processamento automtico.
A linguagem HTML foi concebida para expressar a forma como o dado apresentado para o usurio. As aplicaes precisam de muito esforo para extrair o dado estruturado.
Muitos sites so construdos a partir de dados estruturados mas muito difcil reconstruir a estrutura original do dado atravs da pgina HTML.
Microformatos
Os microformatos aliviam um pouco esse problema. So metadados embutidos no HTML para dar significado as entidades como pessoas, organizaes, eventos, etc.
Exemplo de uso do microformato hCard
Microformatos
Exemplo de uso do microformato geo:
The birds roosted at 52.48, -1.89
Outros microformatos: adr, geo, hCalendar, hAtom, hMedia, hRecipe, hResume, etc;
Microformatos so limitados. Em geral o vocabulrio pequeno e no expressa bem as relaes entre as entidades descritas. No so adequados para a publicao de dados em geral.
Web API
Dados publicados atravs de servios web normalmente so bem estruturados. O uso do protocolo HTTP o padro utilizado;
Empresas como a Amazon e Facebook expem seus dados atravs de servios na web;
Os formatos estruturados mais comuns so XML e JSON que so suportados pela grande maioria das linguagens de programao;
Empresas como a Mashape facilitam a publicao e o acesso a uma variedade de Web APIs em um marketplace;
Com a exploso de APIs na web o nmero de aplicaes que integram vrias fontes de dados (mashups) cresceu rapidamente (ProgrammableWeb);
Web API
A estruturao e padronizao trazida pelas Web APIs so benficas mas demandam muito esforo de integrao.
Hyperlinks
As Web APIs trouxeram a estrutura necessria que facilita o consumo dos dados de diferentes fontes, mas como ligamos os dados de diferentes fontes?
Documentos HTML referenciam outros documentos atravs do elemento anchor que possui o atributo href. Esse um padro da linguagem reconhecido pelos navegadores e que viabilizou a web of documents;
As Web APIs no possuem padres equivalentes ncora HTML para ligar dados relacionados;
Os identificadores disponibilizados atravs das Web APIs so locais e no podem ser utilizados para ligar ou prover a descoberta dos dados de forma global.
Rationale
Documentos HTML no possuem a estrutura adequada para a representao dos dados e seus relacionamentos;
Os microformatos melhoram a representao dos dados embutidos nos documentos HTML atravs de anotaes semnticas;
Os microformatos possuem vocabulrio limitado e no representam adequadamente as relaes.
As Web APIs possuem estrutura adequada para a representao dos dados;
As Web APIs no possuem padres equivalentes ncora HTML para ligar os dados relacionados e portanto no so adequadas para a publicao e compartilhamento dos dados de forma global.
Princpios Linked Data
Proposto por Tim Berners-Lee [6]:
Use URIs para dar nomes as coisas;
Use HTTP URIs para que esses nomes possam ser acessados;
Quando uma URI acessada, responda com dados teis, utilizando padres da web;
Inclua links para outras URIs para facilitar a descoberta de novos dados;
Super Chave Primria
A arquitetura Linked Data reutiliza a infraestrutura da web of documents e os recursos identificados por uma HTTP URI podem ser pessoas, lugares, eventos, relaes, propriedades, documentos, etc;
Entidades reais e conceitos do mundo so identificados universalmente, temos uma super chave primria;
As HTTP URIs no servem apenas como identificadores universais mas tambm como o meio de acessar a informao que descreve o dado identificado (dereference);
http://dbpedia.org/resource/Tim_Berners-Lee
O uso de HTTP URIs satisfaz os princpios 1 e 2;
Rotulando o mundo
RDF
Dados publicados na Web devem seguir uma estrutura padro para permitir interoperabilidade entre as aplicaes;
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 recomendao W3C;
Modelo de dados RDF
O modelo RDF representa o dado como uma srie de enunciados (statements) que descrevem recursos, tipicamente da web, na forma de sujeito-predicado-objeto;
Esses statements so chamados de triplas RDF;
Uma coleo de triplas RDF podem ser visualizadas como um multigrafo direcionado nomeado;
Sujeito e predicado so sempre identificados por URIs;
Objetos podem ou no ser identificados por URIs.
Os predicados so representados por vocabulrios que pode ser visto como o schema do dado;
Vocabulrios RDF
Os vocabulrios definem os conceitos e relaes usados para descrever um domnio ou rea de conhecimento;
Caracterizam os predicados que so usados para descrever os dados e relaes no modelo RDF;
Vocabulrios podem ser complexos com milhares de termos (definies) ou bem simples com apenas dois termos;
Vocabulrios so representados pela linguagem RDF Schema.
RDF Schema - RDFS
Conjunto de classes e propriedades, so elementos bsicos para construo dos vocabulrios;
RDF Schema est para o RDF assim como XML Schema est para o XML;
Tripla RDF
Exemplo:Tim Berners-Lee inventou a World Wide Web
sujeito
predicado
objeto
http://dbpedia.org/resource/Tim_Berners-Leehttp://dbpedia.org/property/inventorhttp://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 pblicas e abertas;Wikipedia
Wikibooks
Geonames
MusicBrainz
Wordnet
DBLP
Interliga 295 datasets;
31 bilhes de triplas RDF
504 milhes de links RDF;
LOD Cloud - 2007
LOD Cloud - 2008
LOD Cloud - 2009
LOD Cloud - 2010
LOD Cloud - 2011
Serializaes RDF
XML
World Wide Web Consortium
@prefix dc: .@prefix rdf: . 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 relaes entre duas entidades. Nesse caso trs URIs esto envolvidas.
Links
Links de relacionamentos: Conectam fontes de dados distribudas, podem ligar com dados internos ou externos, equivalem s ncoras HTML na arquitetura tradicional da web;
foaf:based_near .
Links de identidade: Mltiplas HTTP URIs podem referenciar o mesmo objeto, entidade ou pessoa, isso permitido e incentivado na Web of Data, assim podemos ter informaes ou vises complementares sobre um mesmo recurso da web, nessa arquitetura o ponto central de falha deixa de existir;
dbpedia:Tim_Berners-Leeowl:sameAs .
Links
Links de vocabulrios [10]: Descrevem os tipos de relacionamentos. Auxiliam na integrao de diferentes fontes de dados. Em Linked Data o esquema a fuso da definio dos termos de diferentes vocabulrios;A publicao de novos dados deve, sempre que possvel, reusar vocabulrios consolidados (Foaf, Basic Geo, Gene Ontology, MeSH);
O autor da publicao livre para criar seu prprio vocabulrio, para tal, a URI do termo definido deve ser dereferencivel, e sempre que possvel mapeando para vocabulrios externos equivalentes (owl:sameAs, owl:equivalentProperty, owl:equivalentClass).
Dereferenciando URIs
Qualquer HTTP URI deve ser dereferencivel;
O usurio deve obter uma representao do dado ao acessar a URI atravs do protocolo HTTP.
No importa se a URI identifica um documento HTML ou um conceito, pessoa ou lugar do mundo;
Content Negotiation [7]. Humanos obtm documentos HTML e mquinas documentos RDF;Accept: text/html
Accept: application/rdf+xml
Estratgias:303 URI
Hash URI
303 URIs
Infelizmente objetos reais no podem ser enviados atravs do protocolo HTTP :(
Ao invs de responder com o objeto real representado pela URI o servidor HTTP responde o cdigo 303 (see other [8]) que indica a URI do documento que melhor descreve o objeto;
O cliente faz uma segunda requisio HTTP para obter a descrio 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
Mquina/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: ; 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"
Resource The class resource, everything.
Class The class of classes.
snip.
303 x Hash
303 URIsRequer 2 requisies 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 descrio para todos os objetos se tornaria impeditivo;
Hash URIsSomente 1 requisio HTTP.
A descrio de todos os recursos que compartilham a mesma URI base so retornadas na requisio;
Ideal para bases pequenas, tipicamente descrio de vocabulrios e ontologias, onde o cliente precisa da base inteira;
Hash URI
Tambm possvel 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/aliceIdentifica Alice, a pessoa
http://www.example.com/people/alicePgina web da Alice
http://www.example.com/data/aliceDocumento RDF que descreve Alice
foaf:page ; rdfs:isDefinedBy ;
a foaf:Person; foaf:name "Alice"; foaf:mbox ; ...
Alice's Homepage ...
D2RServer
Soluo opensource para publicao 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 recuperao e manipulao dos dados armazenados como RDF;
uma recomendao do W3C;
PREFIX foaf: SELECT ?name ?emailWHERE { ?person a foaf:Person. ?person foaf:name ?name. ?person foaf:mbox ?email.}
SPARQL (Exemplo)
Consultando total de poos por operadora:
PREFIX amtera-owl: PREFIX dbpprop: PREFIX dbpedia-owl: PREFIX dbpedia:
SELECT ?operadora count(DISTINCT ?poco)WHERE { ?poco amtera-owl:Operadora ?operadora . ?poco amtera-owl:Bacia dbpedia:Campos_Basin .}GROUP BY ?operadora
Resultado
operadoracallret-1
http://dbpedia.org/resource/Petrobras1006
http://dbpedia.org/resource/Shell17
http://dbpedia.org/resource/BP15
http://data.amtera.com.br/anp/ontology/Ogx19
http://dbpedia.org/resource/Texaco2
http://dbpedia.org/resource/Anadarko_Petroleum_Corporation5
http://dbpedia.org/resource/Statoil7
http://dbpedia.org/resource/Total_S.A.6
http://dbpedia.org/resource/Chevron_Corporation7
http://dbpedia.org/resource/Repsol_YPF2
http://dbpedia.org/resource/Queiroz_Galv%C3%A3o1
http://dbpedia.org/resource/Unocal_Corporation2
http://dbpedia.org/resource/Hess_Corporation1
SPARQL (Exemplo)
Consultando reponsvel pela operadora;
O join est sendo feito com um dataset externo, a dbpedia;
PREFIX amtera-owl: PREFIX dbpprop: PREFIX dbpedia-owl:
SELECT DISTINCT ?operadora ?leaderWHERE { GRAPH { ?poco amtera-owl:Operadora ?operadora . } SERVICE { ?operadora dbpedia-owl:keyPerson ?leader . }}
Resultados
operadoraleader
http://dbpedia.org/resource/Koch_Industrieshttp://dbpedia.org/resource/Charles_G._Koch
http://dbpedia.org/resource/Koch_Industrieshttp://dbpedia.org/resource/David_H._Koch
http://dbpedia.org/resource/Unocal_Corporationhttp://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Unocal_Corporationhttp://dbpedia.org/resource/Charles_R._Williamson
http://dbpedia.org/resource/BPhttp://dbpedia.org/resource/Bob_Dudley
http://dbpedia.org/resource/BPhttp://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_YPFhttp://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Repsol_YPFhttp://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Chevron_Corporationhttp://dbpedia.org/resource/John_S._Watson_(Chevron)
http://dbpedia.org/resource/Queiroz_Galv%C3%A3ohttp://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Anadarko_Petroleum_Corporationhttp://dbpedia.org/resource/President
http://dbpedia.org/resource/Anadarko_Petroleum_Corporationhttp://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Enihttp://dbpedia.org/resource/Paolo_Scaroni
http://dbpedia.org/resource/Enihttp://dbpedia.org/resource/Chairman
http://dbpedia.org/resource/Petrobrashttp://dbpedia.org/resource/Chief_financial_officer
http://dbpedia.org/resource/Petrobrashttp://dbpedia.org/resource/Maria_das_Gra%C3%A7as_Foster
http://dbpedia.org/resource/Statoilhttp://dbpedia.org/resource/Helge_Lund
http://dbpedia.org/resource/Statoilhttp://dbpedia.org/resource/Svein_Rennemo
http://dbpedia.org/resource/Galp_Energiahttp://dbpedia.org/resource/Chief_executive_officer
http://dbpedia.org/resource/Galp_Energiahttp://dbpedia.org/resource/Chairman
SPARQL (Exemplo)
PREFIX amtera-owl: PREFIX dbpprop: PREFIX dbpedia-owl: SELECT DISTINCT ?operadora ?num_funcionariosWHERE { GRAPH { ?poco amtera-owl:Operadora ?operadora . } SERVICE { ?operadora dbpprop:numEmployees ?num_funcionarios }}
Consultando nmero de funcionrios por operadora, join externo com a dbpedia;
Resultados
operadoranfuncionarios
http://dbpedia.org/resource/Koch_Industries70000
http://dbpedia.org/resource/Unocal_Corporation6400
http://dbpedia.org/resource/BP79700
http://dbpedia.org/resource/Total_S.A.92855
http://dbpedia.org/resource/Repsol_YPF43300
http://dbpedia.org/resource/Chevron_Corporation62000
http://dbpedia.org/resource/Queiroz_Galv%C3%A3o30
http://dbpedia.org/resource/Anadarko_Petroleum_Corporation4400
http://dbpedia.org/resource/Eni79940
http://dbpedia.org/resource/Hess_Corporation11610
http://dbpedia.org/resource/Petrobras80497
http://dbpedia.org/resource/Statoil30340
http://dbpedia.org/resource/Galp_Energia7310
http://dbpedia.org/resource/Wintershall~1.700
Obrigado. Dvidas?
Referncias
[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
Top Related