Dados abertos do wikipedia ao governo
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Dados abertos do wikipedia ao governo

on

  • 859 views

 

Statistics

Views

Total Views
859
Views on SlideShare
856
Embed Views
3

Actions

Likes
0
Downloads
16
Comments
0

2 Embeds 3

http://www.linkedin.com 2
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dados abertos do wikipedia ao governo Presentation 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