79
Dados abertos, do wikipedia ao governo. http://www.paraondefoiomeudinheiro.com.br / Thiago Rondon - @thiagorondon Fórum Internacional de Software Livre 12 Porto Alegre/Brasil, Jun/2011.

Dados abertos do wikipedia ao governo

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Dados abertos do wikipedia ao governo

Dados abertos, do wikipedia ao governo.

http://www.paraondefoiomeudinheiro.com.br/

Thiago Rondon - @thiagorondon

Fórum Internacional de Software Livre 12 Porto Alegre/Brasil, Jun/2011.

Page 2: Dados abertos do wikipedia ao governo

Agenda

Page 3: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

Page 4: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

• DBpedia

Page 5: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

• DBpedia

• Dados do governo.

Page 6: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

• DBpedia

• Dados do governo.

• Técnicas de manipulação de dados.

Page 7: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

• DBpedia

• Dados do governo.

• Técnicas de manipulação de dados.

• Infografia.

Page 8: Dados abertos do wikipedia ao governo

Agenda

• Dados Abertos

• DBpedia

• Dados do governo.

• Técnicas de manipulação de dados.

• Infografia.

• Projetos nacionais.

Page 9: Dados abertos do wikipedia ao governo

Dados

• Números

• Palavras

• Imagens

• Métricas

• Conjuntos

Page 10: Dados abertos do wikipedia ao governo

Dados fechados

Page 11: Dados abertos do wikipedia ao governo

Dados fechados

• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha

Page 12: Dados abertos do wikipedia ao governo

Dados fechados

• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha

• Copyright, Licença ou Patentes para proibir a reutilização da informação.

Page 13: Dados abertos do wikipedia ao governo

Dados fechados

• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha

• Copyright, Licença ou Patentes para proibir a reutilização da informação.

• Tempo de limite para o uso dos dados.

Page 14: Dados abertos do wikipedia ao governo

Dados fechados

• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha

• Copyright, Licença ou Patentes para proibir a reutilização da informação.

• Tempo de limite para o uso dos dados.

• Uso de uma tecnologia proprietária em protocolos ou criptografia para disponibilizar os dados.

Page 15: Dados abertos do wikipedia ao governo

Dados abertos

Page 16: Dados abertos do wikipedia ao governo

Dados abertos

• se o dado não pode ser encontrado e indexado na web, ele não existe.

Page 17: Dados abertos do wikipedia ao governo

Dados abertos

• se o dado não pode ser encontrado e indexado na web, ele não existe.

• se não estiver aberto e disponível em formato compreensível por máquina, ele não pode ser reaproveitado.

Page 18: Dados abertos do wikipedia ao governo

Dados abertos

• se o dado não pode ser encontrado e indexado na web, ele não existe.

• se não estiver aberto e disponível em formato compreensível por máquina, ele não pode ser reaproveitado.

• Padrões e formatos abertos.

Page 19: Dados abertos do wikipedia ao governo

Dados abertos governamentais.

Page 20: Dados abertos do wikipedia ao governo

Dados abertos governamentais.

• Se algum dispositivo legal não permitir sua replicação, ele não é útil.

Page 21: Dados abertos do wikipedia ao governo

Dados abertos governamentais.

• Se algum dispositivo legal não permitir sua replicação, ele não é útil.

• Atuais, os dados são disponibilizados tão rápidamente quanto necessário.

Page 22: Dados abertos do wikipedia ao governo

Dados abertos governamentais.

• Se algum dispositivo legal não permitir sua replicação, ele não é útil.

• Atuais, os dados são disponibilizados tão rápidamente quanto necessário.

• Não discriminatórios, proprietários, livres de licenças e acessíveis.

Page 23: Dados abertos do wikipedia ao governo

Dados abertos governamentais.

• Se algum dispositivo legal não permitir sua replicação, ele não é útil.

• Atuais, os dados são disponibilizados tão rápidamente quanto necessário.

• Não discriminatórios, proprietários, livres de licenças e acessíveis.

• Completos e primários.

Page 24: Dados abertos do wikipedia ao governo

Padrões de meta-dados

Page 25: Dados abertos do wikipedia ao governo

Padrões de meta-dados

• MARC - Catalogação bibliográfica.

Page 26: Dados abertos do wikipedia ao governo

Padrões de meta-dados

• MARC - Catalogação bibliográfica.

• Dublin Core - dados sobre documentos eletrônicos.

Page 27: Dados abertos do wikipedia ao governo

Padrões de meta-dados

• MARC - Catalogação bibliográfica.

• Dublin Core - dados sobre documentos eletrônicos.

• RDF - Resource Description Framework.

Page 28: Dados abertos do wikipedia ao governo

Dados “ligados” na Web // LinkedData

• Os nomes de “coisas” devem começar com HTTP.

• Eu irei encontrar informações em formatos padrões, e iremos manipular elas de forma trivial.

• Estas informações de retorno, terão relacionamento com outras que terão nomes que começam com HTTP.

Page 29: Dados abertos do wikipedia ao governo

DBpedia

• Permitir que os usuários façam buscas relacionadas de conteúdo baseado nas propriedades utilizadas nos recursos do Wikipedia.

• Janeiro de 2011, > 3.5 milhões de ‘coisas’.

• Pode ser acessada via SPARQL.

Page 30: Dados abertos do wikipedia ao governo

RDF

• Linguagem para interoperabilidade, sem perca de significado.

• Meta-dados sobre os recursos na WEB.

• Identificação via URI.

• Informações em triplas.

Page 31: Dados abertos do wikipedia ao governo

Esquema RDF.

• Sujeito da afirmação.

• Predicado da afirmação.

• Objeto da afirmação.

• Grupos de afirmações, conjunção.

Page 32: Dados abertos do wikipedia ao governo

Serialização

• RDF/Turtle

• RDF/XML

• RDF/JSON

• (....)

Page 33: Dados abertos do wikipedia ao governo

DBpedia

Page 34: Dados abertos do wikipedia ao governo

Larry Wall é o autor do Perl.

Page 35: Dados abertos do wikipedia ao governo

Larry Wall é o autor do Perl.

http://dbpedia.org/page/Perl

Page 36: Dados abertos do wikipedia ao governo

Larry Wall é o autor do Perl.

http://dbpedia.org/page/Perl

http://dbpedia.org/property/developer

Page 37: Dados abertos do wikipedia ao governo

Larry Wall é o autor do Perl.

http://dbpedia.org/page/Perl

http://dbpedia.org/page/Larry_Wall

http://dbpedia.org/property/developer

Page 38: Dados abertos do wikipedia ao governo

Larry Wall é o autor do Perl.

http://dbpedia.org/page/Perl

http://dbpedia.org/page/Larry_Wall

http://dbpedia.org/property/developer

Page 39: Dados abertos do wikipedia ao governo

Qual a ligação entre Larry Wall e Barack Obama ?

Page 40: Dados abertos do wikipedia ao governo
Page 41: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl

Page 42: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl dbdrop:developer

Page 43: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl dbdrop:developer

http://dbpedia.org/page/Larry_Wall

Page 45: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl dbdrop:developer

http://dbpedia.org/page/Larry_Wall

foaf:homepagefoaf:depiction

dbpprop:hasPhotoCollection

dbpprop:nationality

http://www.wall.org/~larry/

http://dbpedia.org/page/United_States

Page 46: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl dbdrop:developer

http://dbpedia.org/page/Larry_Wall

foaf:homepagefoaf:depiction

dbpprop:hasPhotoCollection

dbpprop:nationality

geo:lat geo:longdbpedia-owl:leaderName

http://www.wall.org/~larry/

http://dbpedia.org/page/United_States

Page 47: Dados abertos do wikipedia ao governo

http://dbpedia.org/page/Perl dbdrop:developer

http://dbpedia.org/page/Larry_Wall

foaf:homepagefoaf:depiction

dbpprop:hasPhotoCollection

dbpprop:nationality

geo:lat geo:longdbpedia-owl:leaderName

38.883335 -77.016670

http://dbpedia.org/page/Barack_Obama

http://www.wall.org/~larry/

http://dbpedia.org/page/United_States

Page 48: Dados abertos do wikipedia ao governo

Como ?

my $url = 'http://dbpedia.org/resource/Larry_Wall';

RDF::Trine::Parser->parse_url_into_model( $url, $model );my $label = RDF::Trine::Node::Resource->new('http://www.w3.org/2000/01/rdf-schema#comment');

my $iterator = $model->get_statements(undef, $label, undef);

Page 49: Dados abertos do wikipedia ao governo

RDF Schema (RDFS)

• Definir classes, hierarquia de classes, propriedades de classes.

• Vocabulário estendido ao vocabulário RDF.

• É uma apenas uma descrição adicional dos recursos.

• Aplicação que define o comportamento.

Page 50: Dados abertos do wikipedia ao governo

dados abertos no governo brasileiro.

Page 51: Dados abertos do wikipedia ao governo

CSV

• Valores separados por um delimitador em comum, e um registro por linha.

• Identificação por posição.

• Não há atributos, classes ou conjunções.

Page 52: Dados abertos do wikipedia ao governo

Brasil

Page 53: Dados abertos do wikipedia ao governo

Brasil

• Falta de definição de vocabulários.

Page 54: Dados abertos do wikipedia ao governo

Brasil

• Falta de definição de vocabulários.

• Falta de lei para exigir dados abertos.

Page 55: Dados abertos do wikipedia ao governo

Brasil

• Falta de definição de vocabulários.

• Falta de lei para exigir dados abertos.

• Falta de estrutura de distribuição dos dados.

Page 56: Dados abertos do wikipedia ao governo

Brasil

• Falta de definição de vocabulários.

• Falta de lei para exigir dados abertos.

• Falta de estrutura de distribuição dos dados.

• Falta de um mapa visual, com dados linkados.

Page 57: Dados abertos do wikipedia ao governo

Lei de diretrizes orçamentárias

Page 58: Dados abertos do wikipedia ao governo

Lei de diretrizes orçamentárias

Orientação da elaboração do orçamento fiscal, seguridade social e de investimento do poder

público.

Page 59: Dados abertos do wikipedia ao governo

Lei de diretrizes orçamentárias

Orientação da elaboração do orçamento fiscal, seguridade social e de investimento do poder

público.

Vocabulário de como o orçamento deve ser justificado.

Page 60: Dados abertos do wikipedia ao governo

Infografia

Page 61: Dados abertos do wikipedia ao governo

Infografia

• Representações visuais

Page 62: Dados abertos do wikipedia ao governo

Infografia

• Representações visuais

• Tree-mapping

Page 63: Dados abertos do wikipedia ao governo

Infografia

• Representações visuais

• Tree-mapping

• Hierarquia

Page 64: Dados abertos do wikipedia ao governo

Infografia

• Representações visuais

• Tree-mapping

• Hierarquia

• Nested

Page 65: Dados abertos do wikipedia ao governo

Tree-mapping

ba ca - 25%b - 50%c - 25%

Page 66: Dados abertos do wikipedia ao governo

Tree-mapping

c3

c1

c4

c1 - 8.3%c2 - 16.6%c3 - 50%c4 - 25%c2

Page 67: Dados abertos do wikipedia ao governo

Para onde foi o meu dinheiro ?

• Disponibilização dos dados, baseada nas informações disponíveis no portal da transparência.

• Dados em CSV

• Incompletas.

• Sem vocabulário.

Page 68: Dados abertos do wikipedia ao governo

Como faz ?use utf8; use strict; use warnings; use Scalar::Util qw(looks_like_number); use FindBin qw($Bin); use lib "../CMD/lib"; use

CMD::Schema; my $db = '/home/thiago/cmd/CMD/cmd-novo-2009.db'; my $schema = CMD::Schema->connect("dbi:SQLite:dbname=$db"); my $rs = $schema->resultset('Recurso'); &main; sub check_file { my $filename = shift; open my $fh, '<', $filename or die "error: $@ \n"; return $fh; } sub main { my $fh = &check_file( $ARGV[0] ); my %tree = &process_data($fh); $fh = &check_file( $ARGV[1] ); %tree =

&process_data_transferencia( $fh, %tree ); %tree = &proccess_values(%tree); #print Dumper( \%tree ); my $root = $rs->create( { content => '2009', valor => 0 }); &hash_to_db($root, %tree); } sub hash_to_db () { my $root = shift; my ( %tree ) =

(@_); foreach my $item ( keys %tree ) { my $valor = $tree{$item}; my $node; next if $item eq 'total'; next if $item eq 'NomeFuncao'; # Hm ? if (ref($valor) eq 'HASH') { my $total = $tree{$item}{total} || 0; $node = $root->add_to_children( { content => $item, valor => $total } ); &hash_to_db ($node, %{$valor}); } else { $node = $root->add_to_children( { content => $item, valor

=> $valor } ); } } #my $root = $tree->create({ id => 2, content => 'root', valor => 1 }); #my $child = $root->add_to_children({ content => 'child', valor => 1 }); } sub proccess_values { my (%tree) = (@_); my $total = 0; # Funções foreach

my $i ( keys %tree ) { my $funcao = $tree{$i}; my $total_funcao = 0; # Sub-funções foreach my $j ( keys %{$funcao} ) { my $subfuncao = $tree{$i}{$j}; my $total_subfuncao = 0; # Programas foreach my $k ( keys %{$subfuncao} ) { my $investimento = $tree{$i}{$j}{$k}; # Repasse if ( ref($investimento) eq 'HASH' ) { my $total_repasse = 0; # Estados foreach my $l ( keys %{$investimento} ) { my $total_repasse_estado = 0; # Municipio my $estado = $tree{$i}{$j}{$k}{$l}; foreach my $m ( keys %

{$estado} ) { my $total_repasse_municipio = 0; # Programa my $municipio = $tree{$i}{$j}{$k}{$l}{$m}; foreach my $n ( keys %

{$municipio} ) { my $inv_mun = $tree{$i}{$j}{$k}{$l}{$m}{$n}; $total_repasse_municipio += $inv_mun if looks_like_number($inv_mun); } $total_repasse_estado += $total_repasse_municipio; $tree{$i}{$j}{$k}{$l}{$m}{total} =

$total_repasse_municipio; } $tree{$i}{$j}{$k}{$l}{total} = $total_repasse_estado; $total_repasse += $total_repasse_estado; } $tree{$i}{$j}{$k}{total} = $total_repasse; } $total_subfuncao += $investimento if looks_like_number($investimento); } $tree{$i}

{$j}{total} = $total_subfuncao; $total_funcao += $total_subfuncao; } $tree{$i}{total} = $total_funcao; $total += $total_funcao; }

return %tree; } sub fix_valor { my $v = shift; $v =~ s/\,/\./; $v =~ s/\'//g; $v =~ s/\n//; $v =~ s/\r//; return $v; } sub process_data_transferencia { my ( $fh, %tree ) = @_; my $header = 0; while ( my $row = <$fh> ) { $header++ and next unless

$header; my @cols = split( /\;/, $row ); map { $_ =~ s/\"//g; } @cols; my $valor = $cols[12]; next unless $valor; my $estado = $cols[0]; my $municipio = $cols[2]; my $funcao = $cols[4]; my $subfuncao = $cols[6]; my $programa = $cols[8]; $valor =

&fix_valor($valor); $tree{$funcao}{$subfuncao}{'repasse'}{$estado}{$municipio}{$programa} = $valor; } return %tree; } sub

process_data { my $fh = shift; my %tree; my $header = 0; while ( my $row = <$fh> ) { $header++ and next unless $header; my @cols = split( /\;/, $row ); my $valor = $cols[17]; my $funcao = $cols[9]; my $subfuncao = $cols[11]; my $programa = $cols[13]; $valor =

&fix_valor($valor); $tree{$funcao}{$subfuncao}{$programa} = $valor; } return %tree; }

Page 69: Dados abertos do wikipedia ao governo

Para onde foi o meu dinheiro ?

• Plataforma para facilitar a disponibilização de dados do gasto do governo federal.

• Uma maneira de visualizar os dados em conjunto, e baseado em infográficos.

Page 70: Dados abertos do wikipedia ao governo

Migração dos dados

• O que significa os dados ?

• Migrando para um esquema de árvore.

• Funções

• Sub-funções

• Tipo de repasse

• Programa de governo

Page 71: Dados abertos do wikipedia ao governo
Page 72: Dados abertos do wikipedia ao governo
Page 73: Dados abertos do wikipedia ao governo
Page 74: Dados abertos do wikipedia ao governo
Page 75: Dados abertos do wikipedia ao governo
Page 76: Dados abertos do wikipedia ao governo

TODO

• Facilitar instalação.

• Elaboração de uma especificação técnica para LDO.

• Implementação de um módulo genérico.

• Opção de efetuar um input de dados simples.

• Sincronização automatizada de dados.

Page 77: Dados abertos do wikipedia ao governo

Informações técnicas

• Perl

• DBIx::Class

• Catalyst

• Varnish, Nginx, Plack e Fastcgi.

Page 79: Dados abertos do wikipedia ao governo

• http://www.opendatabr.org/

• http://sao-paulo.pm.org/

• http://slideshare.net/thiagorondon