A+ A-

Kit para dados abertos Implementando uma política de dados abertos

Mapa de decisões tecnológicas

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.

Solução Pré-requisitos Prazo
Publicar dump da base de dados Acesso à base de dados Curto
Servidor web para arquivos
Publicar dados em arquivos CSV Mecanismo de ETL (caso esteja em banco relacional) Curto
Servidor web para arquivos
Publicar dados em arquivos JSON / XML Mecanismo de ETL (caso esteja em banco relacional) Médio
Serviço de desenvolvimento
Servidor web para arquivos
Desenvolver módulo de dados abertos em sistema existente Serviço de desenvolvimento Longo
Servidor web para deploy da nova solução
Desenvolver API RESTful de dados abertos desacoplada da solução Mecanismo de ETL Longo
Serviço de desenvolvimento
Servidor web para deploy da nova solução
Novo Sistema, com a gestão de dados incorporados em sua arquitetura Mecanismo de ETL Longo
Serviço de desenvolvimento
Servidor web para deploy da nova solução
Publicar dados em arquivos RDF Ontologia da área do conhecimento do sistema Longo
Mecanismo de ETL
Servidor web para arquivos
Disponibilizar dados por Endpoint SPARQL Ontologia da área do conhecimento do sistema Mais Longo
Mecanismo de ETL
Banco de dados de triplas
Publicar dados em API de dados ligados (Linked Data) Ontologia da área do conhecimento do sistema Mais Longo
Banco de dados de triplas
Serviço de desenvolvimento
Mecanismo de ETL
Servidor web para deploy da nova solução

Exemplos de cenários da arquitetura da solução para abertura de dados

Publicar dump da base de dados

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:

Desvantagens:

Publicar dados em arquivos CSV

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:

Desvantagens:

Glossário de Formatos

Formatos básicos

Dump SQL

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.

++++++:

------:

CSV

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)

++++++:

------:

Exemplo
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

JSON

É 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)

++++++:

------:

Exemplo
{

    "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

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).

++++++:

------:

Exemplo
<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

Formatos geo

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.

GeoJSON

É 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).

++++++:

------:

Exemplo
{
   "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
         }
      }
   ]
}

Fonte: http://189.9.137.169:8080/geoserver/pac/wms?service=WFS&version=1.0.0&request=GetFeature&typeName=pac:ubs&outputFormat=JSON

KML

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).

++++++:

------:

Shapefile ESRI

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).

++++++:

------:

Formatos baseados em RDF

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.

++++++:

------:

Turtle

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.

++++++:

------:

Exemplo
<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

RDF/XML

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.

++++++:

------:

JSON-LD

É 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.

++++++:

------: