published | permalink | layout | filename | title | desc |
---|---|---|---|---|---|
true |
/Mapa-de-decisões-tecnológicas/ |
slate |
Mapa-de-decisões-tecnológicas.md |
Mapa de decisões - Kit de Dados Abertos |
Neste mapa são apresentadas diversas formas de publicação de dados abertos, dando ao gestor parâmetros de apoio à decisão. |
Durante o processo de abertura de dados, será necessário definir a arquitetura tecnológica da solução de abertura de dados. Não há um modelo único aplicável a todas as situações, mas sim uma gama de possibilidades que devem ser avaliadas à luz da configuração de arquitetura na origem onde os dados a serem abertos estão armazenados, no tempo e recursos disponíveis para o projeto de abertura e do resultado final desejado.
A tabela abaixo mostra algumas possíveis soluções para publicar dados abertos, ordenadas por complexidade e prazo de implementação.
<tr>
<th>
Solução
</th>
<th>
Pré-requisitos
</th>
<th>
Prazo
</th>
</tr>
<tr>
<td rowspan="2">
<a href="#publicar-dump-da-base-de-dados">Publicar dump da base de dados</a>
</td>
<td class="celula-meio">
Acesso à base de dados
</td>
<td rowspan="2">
Curto<br />
</td>
</tr>
<tr>
<td>
Servidor web para arquivos
</td>
</tr>
<tr>
<td rowspan="2">
<a href="#publicar-dados-em-arquivos-csv">Publicar dados em arquivos CSV</a>
</td>
<td class="celula-meio">
Mecanismo de ETL (caso esteja em banco relacional)
</td>
<td rowspan="2">
Curto<br />
</td>
</tr>
<tr>
<td>
Servidor web para arquivos
</td>
</tr>
<tr>
<td rowspan="3">
<a href="#publicar-dados-em-arquivos-json--xml">Publicar dados em arquivos JSON / XML</a>
</td>
<td class="celula-meio">
Mecanismo de ETL (caso esteja em banco relacional)
</td>
<td rowspan="3">
Médio
</td>
</tr>
<tr>
<td class="celula-meio">
Serviço de desenvolvimento
</td>
</tr>
<tr>
<td>
Servidor web para arquivos
</td>
</tr>
<tr>
<td rowspan="2">
<a href="#desenvolver-mdulo-de-dados-abertos-em-sistema-existente">Desenvolver módulo de dados abertos em sistema existente</a>
</td>
<td class="celula-meio">
Serviço de desenvolvimento
</td>
<td rowspan="2">
Longo
</td>
</tr>
<tr>
<td>
Servidor web para deploy da nova solução
</td>
</tr>
<tr>
<td rowspan="3">
<a href="#desenvolver-api-restful-de-dados-abertos-desacoplada-da-soluo">Desenvolver API RESTful de dados abertos desacoplada da
solução</a>
</td>
<td class="celula-meio">
Mecanismo de ETL
</td>
<td rowspan="3">
Longo
</td>
</tr>
<tr>
<td class="celula-meio">
Serviço de desenvolvimento
</td>
</tr>
<tr>
<td>
Servidor web para deploy da nova solução
</td>
</tr>
<tr>
<td rowspan="3">
<a href="#novo-sistema-com-a-gesto-de-dados-incorporados-em-sua-arquitetura">Novo Sistema, com a gestão de dados incorporados em sua arquitetura</a>
</td>
<td class="celula-meio">
Mecanismo de ETL
</td>
<td rowspan="3">
Longo
</td>
</tr>
<tr>
<td class="celula-meio">
Serviço de desenvolvimento
</td>
</tr>
<tr>
<td>
Servidor web para deploy da nova solução
</td>
</tr>
<tr>
<td rowspan="3">
<a href="#publicar-dados-em-arquivos-rdf">Publicar dados em arquivos RDF</a>
</td>
<td class="celula-meio">
Ontologia da área do conhecimento do sistema
</td>
<td rowspan="3">
Longo
</td>
</tr>
<tr>
<td class="celula-meio">
Mecanismo de ETL
</td>
</tr>
<tr>
<td>
Servidor web para arquivos
</td>
</tr>
<tr>
<td rowspan="3">
<a href="#disponibilizar-dados-por-endpoint-sparql">Disponibilizar dados por Endpoint SPARQL</a>
</td>
<td class="celula-meio">
Ontologia da área do conhecimento do sistema
</td>
<td rowspan="3">
Mais Longo
</td>
</tr>
<tr>
<td class="celula-meio">
Mecanismo de ETL
</td>
</tr>
<tr>
<td>
Banco de dados de triplas
</td>
</tr>
<tr>
<td rowspan="5">
<a href="#publicar-dados-em-api-de-dados-ligados-linked-data">Publicar dados em API de dados ligados (Linked Data)</a>
</td>
<td class="celula-meio">
Ontologia da área do conhecimento do sistema
</td>
<td rowspan="5">
Mais Longo
</td>
</tr>
<tr>
<td class="celula-meio">
Banco de dados de triplas
</td>
</tr>
<tr>
<td class="celula-meio">
Serviço de desenvolvimento
</td>
</tr>
<tr>
<td class="celula-meio">
Mecanismo de ETL
</td>
</tr>
<tr>
<td>
Servidor web para deploy da nova solução
</td>
</tr>
Consiste na exportação de bases de dados, após tomar o devido cuidado em remover informações sensíveis, como nomes de usuários, senhas e informações pessoais.
É necessário estabelecer o processo de exportação de maneira automática, para manter os dados atualiados, bem como hospedar o arquivo resultante em um servidor de arquivos de onde o mesmo possa ser acessado através da internet por meio de uma URL fixa.
Para mais informações, consulte "Dump SQL" no Glossário de Formatos.
Vantagens:
- simplicidade e rapidez de implementação
- possibilita o uso para análises de dados que dependam do acesso completo aos dados
- validação dos tipos de campos, associações entre tabelas
Desvantagens:
- formato de arquivo e compatibilidade dependem do Sistema Gerenciador de Banco de Dados - SGBD - utilizado
- os tamanhos grandes dos arquivos podem ser um fator dificultador a determinadas necessidades de uso dos dados
A forma mais simples de disponibilizar dados abertos é por meio de uma planilha CSV. Para mais informações sobre o formato, consulte "CSV" no Glossário de Formatos.
O fluxo de publicação depende da origem dos dados. Nos casos em que eles estão localizados em um banco de dados, um processo de ETL deve ser estabelecido para ler os dados na orgiem, fazer as transformações necessárias (tais como remoção de informações sensíveis e melhorias na legibilidade e estrutura das tabelas), gerar e gravar o arquivo CSV.
Se a origem dos dados estiver em uma planilha de suíte de escritório (ex.: Microsoft Excel ou LibreOffice Calc), pode ser feita uma exportação manual para o foremato CSV. Entretanto, não é aconselhável, uma vez que a atualização dos dados terá de ser feita também manualmente.
Vantagens:
- simplicidade e rapidez de implementação
- facilidade de uso: pode ser aberto em diversas ferramentas amplamente conhecidas, por exemplo, em editores de planilhas, desde que o tamanho das tabelas seja compatível
Desvantagens:
- não possibilita a validação dos tipos de campos
- formato não padronizado
De forma genérica, um "dump" é uma descarga de todo o conteúdo de uma base de dados, estruturada de uma forma que possa ser novamente carregada em um sistema gerenciador de banco de dados (SGBD) idêntico ou compatível, produzindo-se por esse processo uma base de dados que é uma cópia fidedigna da original.
Há vários tipos de dump. Os formatos textuais podem ser inspecionados em um editor de textos e geralmente usam a sintaxe SQL no dialeto particular do SGBD utilizado. Há também os formatos binários que produzem arquivos menores que os textuais, mas a compatibilidade com versões diferentes do SGBD tende a ser ainda mais restritiva que a compatibilidade dos formatos textuais.
Os SGBD em geral possuem processos definidos e documentação objetiva de como se gerar e carregar um dump.
++++++
:
- Forma menos trabalhosa de se publicar os dados
- Curto prazo para produção
- Preserva a estrutura dos dados como o são em produção
------
:
- Provável necessidade de remoção prévia de dados pessoais
- Necessidade de realizar carga dos dados em SGBD para acessá-los
- Não há padronização entre formatos de dumps de SGBSs diferentes: em geral necessita-se do mesmo software e versão que gerou o dump
Pode significar Comma-Separated Values (valores separados por vírgula), ou ainda, Character-Separated Values (valores separados por caractere). É um formato para armazenamento de dados tabulares em texto. A codificação é muito simples: cada linha do arquivo representa uma linha na tabela, e as colunas são separadas por vírgula. Campos que podem conter vírgula devem ser delimitados por aspas. CSV é recomendado para representação de estrutura de dados mais simples, de natureza tabular, onde não existem subpropriedades ou listas, gerando um arquivo menor e mais leve para processamento. Arquivos CSV são processáveis diretamente por editores de planilhas, como o OpenOffice e o MS Excel. (do Glossário)
++++++
:
- Simplicidade. Registros em estrutura tabular.
- Facilidade de geração (qualquer banco de dados exporta)
- Facilidade de consumo (qualquer editor de planilhas manipula)
- Sucinto (os arquivos gerados são menores)
------
:
- Falta de padronização do formato
- Não suporta tipagem de valores
- Dificuldade em se representar ligações entre os dados
Quantidade do item,Valor estimado do item,Decreto 7174,Margem preferencial,Unidade de fornecimento,Situação do item,Valor melhor lance
6,"R$ 1,590.33",Não,Não,SV,encerrado,R$ 360.00
8,"R$ 1,480.67",Não,Não,SV,encerrado,R$ 314.98
6,"R$ 1,700.00",Não,Não,SV,encerrado,R$ 989.00
Fonte: http://compras.dados.gov.br/pregoes/doc/pregao/1600850000132014/itens.csv
É um acrônimo para JavaScript Object Notation. É um padrão aberto de estruturação de dados baseado em texto e legível por humano. A especificação é a RFC 7159. JSON ganhou maior utilização com a utilização de carga dinâmica de conteúdo em páginas web com Javascript (técnica denominada "Ajax"). A serialização em JSON é muito simples e resulta em uma estrutura pouco verbosa o que se mostra uma ótima alternativa para o XML. JSON possibilita serialização de estrutura de objetos complexos, como listas e subpropriedades. JSON está se tornando o padrão mais utilizado para integração de dados entre repositórios e frameworks, também está se tornando o padrão nativo de armazenamento em alguns bancos de dados modernos. (do Glossário)
++++++
:
- Facilidade para representar hierarquias
- Suporta tipagem de valores
- Facilidade de consumo (qualquer linguagem de programação lê com facilidade)
- Utilizável diretamente em navegadores (leitura por javascript)
- Formato padronizado (RFC 7159 do IETF, ECMA-404)
- Possibilidade de definir esquema de validação
- Mais leve para processar que o XML
------
:
{
"uasg": 160085,
"modalidade": 5,
"numero_aviso": 132014,
"identificador": "16008505000132014",
"tipo_pregao": "Eletrônico",
"situacao_aviso": "Publicado",
"numero_processo": "64535.029433/2014",
"tipo_recurso": "Nacional",
"nome_responsavel": "ELIAS ANTONIO MARCOS CARNEIRO DE ALBUQUERQUE",
"funcao_responsavel": "Ordenador de Despesas",
"data_entrega_edital": "2015-04-08T09:00:00",
"endereco_entrega_edital": "Qg Ex Bl.a 1. Pavimento - Setor Militar Urbano - Smu/DF",
"data_abertura_proposta": "2015-04-22T09:00:00",
"data_entrega_proposta": "2015-04-08T09:00:00"
}
Fonte: http://compras.dados.gov.br/licitacoes/doc/licitacao/16008505000132014.json
XML significa Extensible Markup Language, e é uma sintaxe para codificar documentos em um formato legível por máquina. É baseado em texto e tem como alguns de seus objetivos a facilidade de uso e legibilidade. XML é largamente utilizado como formato de troca de dados nos clássicos Web Services SOAP. Apesar da larga utilização, é cada vez menos encorajada a utilização desse formato para integração de aplicações. Em substituição, recomenda-se utilizar JSON, por economizar banda e ser de processamento mais leve. (do Glossário).
++++++
:
- Facilidade para representar hierarquias
- Suporta tipagem de valores
- Amplo suporte de ferramentas
- Formato padronizado (W3C)
- Possilidade de definir esquema de validação
------
:
- Prolixo (os arquivos gerados são maiores)
- Maior gasto de processamento para geração e consumo em relação ao JSON.
<resource>
<_links>
<link href="/fornecedores/id/linha_fornecimento/308" rel="self" title="Linha de Fornecimento 308: EQUIPAMENTOS PARA PURIFICAÇÃO DE ÁGUA"/>
<link href="/fornecedores/v1/fornecedores?id_linha_fornecimento=308" rel="fornecedores" title="Fornecedores associados a esta Linha de Fornecimento"/>
<link href="/materiais/id/material/4610" rel="material" title="Material 4610: EQUIPAMENTOS PARA PURIFICAÇÃO DE ÁGUA"/>
</_links>
<id>308</id>
<codigo_material>4610</codigo_material>
<tipo>Material</tipo>
<ativo>true</ativo>
</resource>
Fonte: http://compras.dados.gov.br/fornecedores/doc/linha_fornecimento/308.xml
Alguns formatos de arquivo servem especificamente para representar dados geográficos. A seguir, são relacionados os principais padrões abertos para dados geo, juntamente com as vantagens e desvantagens de cada um.
É um formato aberto baseado em JSON para representar informações geográficas. Possibilita representar formas como pontos, linhas e polígonos com coordenadas geográficas, juntamente com seus atributos não-espaciais. O GeoJSON não é mantido por um órgão formal de padronização, como alguns outros formatos para informações geográficas. Em vez disso, ele é especificado por um grupo de trabalho de desenvolvedores. (do Glossário).
++++++
:
- Todos os benefícios do JSON
- Bom suporte de ferramentas
- Leve para processamento
------
:
- Falta padronização (embora a especificação seja aberta)
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"id":"ubs.fid--4ce37384_151a5912be6_34da",
"geometry":{
"type":"MultiPoint",
"coordinates":[
[
-43.023,
-6.767
]
]
},
"geometry_name":"geometria",
"properties":{
"codigo":"9724",
"empreendimento":"Floriano - PI - UBS I",
"subeixo":"Comunidade Cidadã",
"tipo":"UBS",
"orgao_responsavel":"Ministério da Saúde",
"executor":"Município",
"unidade_federativa":"PI",
"municipio":"FLORIANO",
"investimento_previsto":"--",
"observacao":"",
"estagio":"Concluído",
"data_de_referencia":"31 de Outubro de 2014",
"count":0
}
},
{
"type":"Feature",
"id":"ubs.fid--4ce37384_151a5912be6_34db",
"geometry":{
"type":"MultiPoint",
"coordinates":[
[
-40.616,
-7.088
]
]
},
"geometry_name":"geometria",
"properties":{
"codigo":"9725",
"empreendimento":"Fronteiras - PI - UBS I",
"subeixo":"Comunidade Cidadã",
"tipo":"UBS",
"orgao_responsavel":"Ministério da Saúde",
"executor":"Município",
"unidade_federativa":"PI",
"municipio":"FRONTEIRAS",
"investimento_previsto":"--",
"observacao":"",
"estagio":"Em obras",
"data_de_referencia":"31 de Outubro de 2014",
"count":0
}
}
]
}
Acrônimo para Keyhole Markup Language. É um formato baseado em XML, desenvolvido originalmente pelo Google e depois padronizado pelo Open Geospatial Consortium. Pode representar informações geográficas, tais como marcadores de local, imagens, polígonos, modelos tridimensionais ou descrições textuais, usando coordenadas de latitude, longitude e elevação conforme o sistema WGS84. (do Glossário).
++++++
:
- Formato padronizado
- Bom suporte de ferramentas
------
:
- Mais pesado para processamento que o GeoJSON
Formato aberto para dados geoespaciais, desenvolvido pela empresa Esri, que produz soluções de software para sistemas de informações geográficas (GIS). Apesar de ser mantido por uma empresa, a sua especificação é aberta e é implementada por praticamente todas as ferramentas de GIS. (do Glossário).
++++++
:
- Amplo suporte de ferramentas
------
:
- Falta padronização (embora a especificação seja aberta)
- Necessita múltiplos arquivos para um único mapa
- Possui limitações no armazenamento de atributos
A família de formatos RDF baseia-se em um metamodelo de grafos para indicar os relacionamentos entre os nós, onde cada nó pode ser qualquer coisa sobre a qual queira se afirmar algo. Esse metamodelo possibilita estabelecer relações semânticas entre os dados, ao descrevê-los conforme um modelo (vocabulário ou ontologia) preestabelecido para aquele domínio da informação.
Dados conforme esse metamodelo de grafos podem ser armazenados em bancos de dados especializados, chamados triple stores, ou bancos de triplas, numa referência à forma de descrever o grafo listando cada tripla nó-aresta-nó, representando sujeito, predicado e objeto.
Ao gravar dados RDF em um arquivo, no entanto, é necessário escolher uma entre as múltiplas sintaxes possíveis para representar o grafo como uma sequência de caracteres: XML, N-Triples, Turtle, JSON-LD, RDFa, etc. (do Glossário).
A seguir, algumas vantagens e desvantagens de se usar RDF em geral para a publicação de dados. Em seguida, apresentam-se uma breve descrição e as vantagens e desvantagens de cada um dos formatos de arquivo (sintaxes) específicos para dados em RDF.
++++++
:
- possibilidade de utilizar semântica para descrever os dados
- facilita o cruzamento e ligação de dados entre fontes diversas
- potencializa a reutilização de ferramentas especializadas em dados de determinado domínio da informação
- facilita a descoberta de conhecimento ao possibilitar queries mais complexas usando dados de diversos domínios
------
:
- necessita desenvolver ontologia que descreve os conceitos relacionados aos dados
- maior complexidade do metamodelo (grafos)
- maior heterogeneidade nas estrutura dos dados
Turtle significa "Terse RDF Triple Language", ou linguagem sucinta de triplas RDF. Foi criada como uma sintaxe simplificada para leitura tanto por humanos quanto por máquinas e padronizada em 2014. A indentação e o uso de prefixos são elementos que facilitam a leitura, assim como o agrupamento de triplas que possuem o mesmo sujeito ou que possuem o mesmo sujeito e mesmo predicado.
++++++
:
- Sucinto (os arquivos gerados são menores)
- Simplicidade de leitura por humanos
- Formato padronizado
- Bom suporte de ferramentas
- Leve para processamento
------
:
<http://orcamento.dados.gov.br/id/2015/Acao/0011>
a loa:OperacaoEspecial , loa:Acao ;
rdfs:label "Contribuição ao Fundo Global para o Meio Ambiente - GEF (MP)" ;
loa:codigo "0011" .
<http://orcamento.dados.gov.br/id/2015/ItemDespesa/322014>
loa:temAcao <http://orcamento.dados.gov.br/id/2015/Acao/0005> .
<http://orcamento.dados.gov.br/id/2015/ItemDespesa/357389>
loa:temAcao <http://orcamento.dados.gov.br/id/2015/Acao/0005> .
Fonte: http://orcamento.dados.gov.br/doc/2015/Acao.ttl
A sintaxe original, quando o padrão RDF foi inicialmente estabelecido, foi a baseada em XML. Por ser a primeira sintaxe para RDF, o seu suporte em ferramentas é excelente. Por outro lado, pela verbosidade do XML e pela sua estrutura hierárquica, os arquivos gerados são geralmente complexos e de difícil leitura.
++++++
:
- Formato padronizado
- Amplo suporte de ferramentas
------
:
- Dificuldade de leitura por humanos
- Utiliza estrutura hierárquica para representar um modelo de grafos
- Prolixo (os arquivos gerados são maiores)
- Mais pesado para processamento
É um formato baseado em JSON para Linked Data, também padronizado em 2014. Traz todas as vantagens do formato JSON. A estrutura de mapeamento para IRIs pode opcionalmente ser separada em um documento JSON de contexto, o que deixa o JSON principal, onde estão os dados, essencialmente com a mesma estrutura que um documento JSON comum.
++++++
:
- Formato padronizado
- Leve para processamento
- Utilizável diretamente em navegadores (leitura por javascript)
------
:
- Menor suporte de ferramentas por ser um padrão mais recente