Dados abertos do wikipedia ao governo

947 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
947
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Dados abertos do wikipedia ao governo

  1. 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. 2. Agenda
  3. 3. Agenda• Dados Abertos
  4. 4. Agenda• Dados Abertos• DBpedia
  5. 5. Agenda• Dados Abertos• DBpedia• Dados do governo.
  6. 6. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.
  7. 7. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.• Infografia.
  8. 8. Agenda• Dados Abertos• DBpedia• Dados do governo.• Técnicas de manipulação de dados.• Infografia.• Projetos nacionais.
  9. 9. Dados• Números• Palavras• Imagens• Métricas• Conjuntos
  10. 10. Dados fechados
  11. 11. Dados fechados• Informações em um banco de dados ou um website que apenas usuários registrados podem acessar os dados. // captcha
  12. 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. 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. 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. 15. Dados abertos
  16. 16. Dados abertos• se o dado não pode ser encontrado e indexado na web, ele não existe.
  17. 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. 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. 19. Dados abertosgovernamentais.
  20. 20. Dados abertos governamentais.• Se algum dispositivo legal não permitir sua replicação, ele não é útil.
  21. 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. 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. 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. 24. Padrões de meta-dados
  25. 25. Padrões de meta-dados• MARC - Catalogação bibliográfica.
  26. 26. Padrões de meta-dados• MARC - Catalogação bibliográfica.• Dublin Core - dados sobre documentos eletrônicos.
  27. 27. Padrões de meta-dados• MARC - Catalogação bibliográfica.• Dublin Core - dados sobre documentos eletrônicos.• RDF - Resource Description Framework.
  28. 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. 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. 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. 31. Esquema RDF.• Sujeito da afirmação.• Predicado da afirmação.• Objeto da afirmação.• Grupos de afirmações, conjunção.
  32. 32. Serialização• RDF/Turtle• RDF/XML• RDF/JSON• (....)
  33. 33. DBpedia
  34. 34. Larry Wall é o autor do Perl.
  35. 35. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perl
  36. 36. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer
  37. 37. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer http://dbpedia.org/page/Larry_Wall
  38. 38. Larry Wall é o autor do Perl. http://dbpedia.org/page/Perlhttp://dbpedia.org/property/developer http://dbpedia.org/page/Larry_Wall
  39. 39. Qual a ligação entre Larry Wall e Barack Obama ?
  40. 40. http://dbpedia.org/page/Perl
  41. 41. http://dbpedia.org/page/Perl dbdrop:developer
  42. 42. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall
  43. 43. http://dbpedia.org/page/Perl dbdrop:developer http://dbpedia.org/page/Larry_Wall dbpprop:hasPhotoCollectionfoaf:depiction foaf:homepage dbpprop:nationality
  44. 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. 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. 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. 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. 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. 49. dados abertos nogoverno brasileiro.
  50. 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. 51. Brasil
  52. 52. Brasil• Falta de definição de vocabulários.
  53. 53. Brasil• Falta de definição de vocabulários.• Falta de lei para exigir dados abertos.
  54. 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. 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. 56. Lei de diretrizes orçamentárias
  57. 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. 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. 59. Infografia
  60. 60. Infografia• Representações visuais
  61. 61. Infografia• Representações visuais • Tree-mapping
  62. 62. Infografia• Representações visuais • Tree-mapping • Hierarquia
  63. 63. Infografia• Representações visuais • Tree-mapping • Hierarquia • Nested
  64. 64. Tree-mapping a - 25% a b c b - 50% c - 25%
  65. 65. Tree-mapping c1 c1 - 8.3% c2 - 16.6% c3 c4 c3 - 50% c2 c4 - 25%
  66. 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. 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. 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. 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. 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. 71. Informações técnicas• Perl• DBIx::Class• Catalyst• Varnish, Nginx, Plack e Fastcgi.
  72. 72. Projetos• http://www.openspending.org/• http://www.perlrdf.org• http://rdf.dmoz.org• http://ww.idealliance.org/specifications/ prism/
  73. 73. • http://www.opendatabr.org/• http://sao-paulo.pm.org/• http://slideshare.net/thiagorondon

×