Your SlideShare is downloading. ×
  • Like
Dados abertos do wikipedia ao governo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Dados abertos do wikipedia ao governo

  • 596 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
596
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
17
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Dados abertos, dowikipedia ao governo. http://www.paraondefoiomeudinheiro.com.br/Fórum Internacional de Software Livre 12 Porto Alegre/Brasil, Jun/2011. Thiago Rondon - @thiagorondon
  • 2. Agenda
  • 3. Agenda• Dados Abertos
  • 4. Agenda• Dados Abertos• DBpedia
  • 5. Agenda• Dados Abertos• DBpedia• Dados do governo.
  • 6. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.
  • 7. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.• Infografia.
  • 8. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.• Infografia.• Projetos nacionais.
  • 9. Dados• Números• Palavras• Imagens• Métricas• Conjuntos
  • 10. Dados fechados
  • 11. Dados fechados• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. Dados abertos
  • 16. Dados abertos• se o dado não pode ser encontrado e indexado na web, ele não existe.
  • 17. 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.
  • 18. 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.
  • 19. Dados abertosgovernamentais.
  • 20. Dados abertos governamentais.• Se algum dispositivo legal não permitir sua replicação, ele não é útil.
  • 21. 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.
  • 22. 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.
  • 23. 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.
  • 24. Padrões de meta-dados
  • 25. Padrões de meta-dados• MARC - Catalogação bibliográfica.
  • 26. Padrões de meta-dados• MARC - Catalogação bibliográfica.• Dublin Core - dados sobre documentos eletrônicos.
  • 27. Padrões de meta-dados• MARC - Catalogação bibliográfica.• Dublin Core - dados sobre documentos eletrônicos.• RDF - Resource Description Framework.
  • 28. 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.
  • 29. 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.
  • 30. RDF• Linguagem para interoperabilidade, sem perca de significado.• Meta-dados sobre os recursos na WEB.• Identificação via URI.• Informações em triplas.
  • 31. Esquema RDF.• Sujeito da afirmação.• Predicado da afirmação.• Objeto da afirmação.• Grupos de afirmações, conjunção.
  • 32. Serialização• RDF/Turtle• RDF/XML• RDF/JSON• (....)
  • 33. DBpedia
  • 34. Larry Wall é o autor do Perl.
  • 35. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perl
  • 36. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer
  • 37. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer http://dbpedia.org/page/Larry_Wall
  • 38. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer http://dbpedia.org/page/Larry_Wall
  • 39. Qual a ligação entre Larry Wall e Barack Obama ?
  • 40. http://dbpedia.org/page/Perl
  • 41. http://dbpedia.org/page/Perl dbdrop:developer
  • 42. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall
  • 43. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall dbpprop:hasPhotoCollectionfoaf:depiction foaf:homepage dbpprop:nationality
  • 44. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall dbpprop:hasPhotoCollectionfoaf:depiction foaf:homepage http://www.wall.org/~larry/ dbpprop:nationality http://dbpedia.org/page/United_States
  • 45. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall dbpprop:hasPhotoCollectionfoaf:depiction foaf:homepage http://www.wall.org/~larry/ dbpprop:nationality http://dbpedia.org/page/United_States geo:lat geo:long dbpedia-owl:leaderName
  • 46. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall dbpprop:hasPhotoCollectionfoaf:depiction foaf:homepage http://www.wall.org/~larry/ dbpprop:nationality http://dbpedia.org/page/United_States geo:lat geo:long dbpedia-owl:leaderName 38.883335 -77.016670 http://dbpedia.org/page/Barack_Obama
  • 47. 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);
  • 48. 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.
  • 49. dados abertos nogoverno brasileiro.
  • 50. 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.
  • 51. Brasil
  • 52. Brasil• Falta de definição de vocabulários.
  • 53. Brasil• Falta de definição de vocabulários.• Falta de lei para exigir dados abertos.
  • 54. Brasil• Falta de definição de vocabulários.• Falta de lei para exigir dados abertos.• Falta de estrutura de distribuição dos dados.
  • 55. 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.
  • 56. Lei de diretrizes orçamentárias
  • 57. Lei de diretrizes orçamentáriasOrientação da elaboração do orçamento fiscal,seguridade social e de investimento do poder público.
  • 58. Lei de diretrizes orçamentáriasOrientaçã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.
  • 59. Infografia
  • 60. Infografia• Representações visuais
  • 61. Infografia• Representações visuais • Tree-mapping
  • 62. Infografia• Representações visuais • Tree-mapping • Hierarquia
  • 63. Infografia• Representações visuais • Tree-mapping • Hierarquia • Nested
  • 64. Tree-mapping a - 25% a b c b - 50% c - 25%
  • 65. Tree-mapping c1 c1 - 8.3% c2 - 16.6% c3 c4 c3 - 50% c2 c4 - 25%
  • 66. 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.
  • 67. Como faz ? use utf8; use strict; use warnings; use Scalar::Util qw(looks_like_number); use FindBin qw($Bin); use lib "../CMD/lib"; useCMD::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 eqNomeFuncao; # 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; } subprocess_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; }
  • 68. 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.
  • 69. 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
  • 70. 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.
  • 71. Informações técnicas• Perl• DBIx::Class• Catalyst• Varnish, Nginx, Plack e Fastcgi.
  • 72. Projetos• http://www.openspending.org/• http://www.perlrdf.org• http://rdf.dmoz.org• http://ww.idealliance.org/specifications/ prism/
  • 73. • http://www.opendatabr.org/• http://sao-paulo.pm.org/• http://slideshare.net/thiagorondon