====== Scripts SPARQL de exemplo para consultas ao Orçamento Federal ======
Abaixo seguem alguns exemplos de consultas ao [[http://www1.siop.planejamento.gov.br/sparql/|endpoint SPARQL]] dos Dados Abertos do Orçamento Federal.
===== 1. Como executar consultas no endpoint SPARQL do Orçamento Federal =====
1) Copie o código da consulta para a área de //Query Text// no [[http://www1.siop.planejamento.gov.br/sparql/|endpoint SPARQL]] da SOF. Note que estão disponibilizadas algumas consultas neste manual. Se tiver interesse em outras, entre em contato para criarmos. Se tiver interesse de aprender a linguagem SPARQL, existem vários tutoriais disponíveis na WEB. Veja [[http://jena.apache.org/tutorials/sparql.html|aqui]] um exemplo.
{{ :acesso_publico:dados_abertos:endpoint_001.png?nolink |}}
2) Escolha o formato de saída na opção //Results Format// indicada acima.
{{ :acesso_publico:dados_abertos:opcoes_saida.png?nolink |}}
3) Rode a consulta: botão //Run Query//.
===== 2. Consultas Genéricas =====
==== Total do Orçamento de um ano específico ====
//Valores de execução para 2017, neste exemplo.//
SELECT ?exercicio (sum(?val1) as ?ploa) (sum(?val2) as ?loa) (sum(?val3) as ?lei_mais_credito) (sum(?val4) as ?empenhado) (sum(?val5) as ?liquidado) (sum(?val6) as ?pago) WHERE {
GRAPH {
?endExercicio loa:dataUltimaAtualizacao ?data .
?endExercicio loa:identificador ?exercicio .
?i a loa:ItemDespesa .
?i loa:valorProjetoLei ?val1 .
?i loa:valorDotacaoInicial ?val2 .
?i loa:valorLeiMaisCredito ?val3 .
?i loa:valorEmpenhado ?val4 .
?i loa:valorLiquidado ?val5 .
?i loa:valorPago ?val6 .
}
} Group By ?exercicio
Order By ?exercicio
==== Informações por função num ano específico ====
//Valores por função para 2017, neste exemplo.//
SELECT ?Funcao (sum (?DotacaoInicial)) as ?total WHERE
{
?i rdf:type loa:ItemDespesa .
?i loa:temExercicio [loa:identificador 2017] .
?i loa:temFuncao [rdfs:label ?Funcao] .
?i loa:valorDotacaoInicial ?DotacaoInicial
}
GROUP BY ?Funcao
ORDER BY ?total
==== Informação de uma linha específica (Line Item) do Orçamento ====
//Informação de um line item (linha de despesa 221900) específica, neste exemplo.//
SELECT ?linha ?UO ?Funcao ?Programa ?Acao ?DotInicial WHERE
{
?linha rdf:type loa:ItemDespesa .
FILTER (regex (?linha, "221900", "i")) .
?linha loa:temExercicio [loa:identificador 2015] .
?linha loa:temUnidadeOrcamentaria [rdfs:label ?UO] .
?linha loa:temFuncao [rdfs:label ?Funcao] .
?linha loa:temPrograma [rdfs:label ?Programa] .
?linha loa:temAcao [rdfs:label ?Acao] .
?linha loa:valorDotacaoInicial ?DotInicial .
}
==== Totais por ano ====
//Valores totais do orçamento anual para todos os exercícios para os quais existem dados no endpoint.//
SELECT ?year (sum(?value) as ?total)
WHERE {
?i loa:temExercicio ?year .
?i loa:valorDotacaoInicial ?value .
} GROUP BY ?year ORDER BY ?year
==== Line itens por ano ====
SELECT ?year (COUNT (?i) as ?lines) WHERE
{
?i rdf:type loa:ItemDespesa .
?i loa:temExercicio ?year .
}
GROUP BY ?year
ORDER BY ?year
==== Orçamento Detalhado ====
//O exemplo abaixo é mais complexo pois detalha todo o orçamento de um determinado ano (neste exemplo é 2017). Note que filtros podem ser estabelecidos nas seções iniciadas por "#" para restringir ao que se quer.//
SELECT ?codExercicio ?data ?codEsfera ?descEsfera ?codOrgao ?descOrgao ?codUO ?descUO ?codFuncao ?descFuncao ?codSubfuncao ?descSubfuncao ?codPrograma ?descPrograma ?codAcao ?descAcao ?codSubtitulo ?descSubtitulo ?codPlanoOrcamentario ?descPlanoOrcamentario ?codFonte ?descFonte ?codCategoriaEconomica ?descCategoriaEconomica ?codGND ?descGND ?codModalidadeAplicacao ?descModalidadeAplicacao ?codIdUso ?descIdUso ?codResultadoPrimario ?descResultadoPrimario ?codElementoDespesa ?descElementoDespesa (sum(?val1) as ?ploa) (sum(?val2) as ?loa) (sum(?val3) as ?lei_mais_credito) (sum(?val4) as ?empenhado) (sum(?val5) as ?liquidado) (sum(?val6) as ?pago) WHERE {
GRAPH {
?i loa:temExercicio ?exercicio .
?exercicio loa:dataUltimaAtualizacao ?data .
?exercicio loa:identificador ?codExercicio .
?i loa:temEsfera ?esfera .
?esfera loa:codigo ?codEsfera .
?esfera rdfs:label ?descEsfera .
?UO loa:temOrgao ?orgao .
?orgao loa:codigo ?codOrgao .
?orgao rdfs:label ?descOrgao .
?i loa:temUnidadeOrcamentaria ?UO .
?UO loa:codigo ?codUO .
?UO rdfs:label ?descUO .
?i loa:temFuncao ?funcao .
?funcao loa:codigo ?codFuncao .
?funcao rdfs:label ?descFuncao .
?i loa:temSubfuncao ?subfuncao .
?subfuncao loa:codigo ?codSubfuncao .
?subfuncao rdfs:label ?descSubfuncao .
?i loa:temPrograma ?programa .
?programa loa:codigo ?codPrograma .
?programa rdfs:label ?descPrograma .
?i loa:temAcao ?acao .
?acao loa:codigo ?codAcao .
?acao rdfs:label ?descAcao .
?i loa:temSubtitulo ?subtitulo .
?subtitulo loa:codigo ?codSubtitulo .
?subtitulo rdfs:label ?descSubtitulo .
?i loa:temPlanoOrcamentario ?planoorcamentario .
?planoorcamentario loa:codigo ?codPlanoOrcamentario .
?planoorcamentario rdfs:label ?descPlanoOrcamentario .
?i loa:temFonteRecursos ?fonte .
?fonte loa:codigo ?codFonte .
?fonte rdfs:label ?descFonte .
?i loa:temCategoriaEconomica ?categoriaeconomica .
?categoriaeconomica loa:codigo ?codCategoriaEconomica .
?categoriaeconomica rdfs:label ?descCategoriaEconomica .
?i loa:temGND ?GND .
?GND loa:codigo ?codGND .
?GND rdfs:label ?descGND .
?i loa:temModalidadeAplicacao ?modalidadeaplicacao .
?modalidadeaplicacao loa:codigo ?codModalidadeAplicacao .
?modalidadeaplicacao rdfs:label ?descModalidadeAplicacao .
?i loa:temIdentificadorUso ?iduso .
?iduso loa:codigo ?codIdUso .
OPTIONAL {?iduso rdfs:label ?descIdUso }.
?i loa:temResultadoPrimario ?resultadoprimario .
?resultadoprimario loa:codigo ?codResultadoPrimario .
OPTIONAL
{?resultadoprimario rdfs:label ?descResultadoPrimario }.
?i loa:temElementoDespesa ?elementoDespesa .
?elementoDespesa loa:codigo ?codElementoDespesa .
?elementoDespesa rdfs:label ?descElementoDespesa .
# Filtro. Insira o caractere '#' antes da linha para excluír a linha.
# Uma linha excluída, significa que o filtro não será considerado.
# Por exemplo, se for excluída a linha "#?funcao loa:codigo "26" ,
# Isso significa que todas as funções serão consideradas na pesquisa, não apenas a função "26" como anteriormente.
#?esfera loa:codigo "10" .
#?orgao loa:codigo "39000" .
#?UO loa:codigo "26101" .
#?funcao loa:codigo "26" .
#?subfuncao loa:codigo "122" .
#?programa loa:codigo "2029" .
#?acao loa:codigo "7K66" .
#?subtitulo loa:codigo "0014" .
#?planoorcamentario loa:codigo "0000" .
#?fonte loa:codigo "100" .
#?resultadoprimario loa:codigo "2" .
#?categoriaeconomica loa:codigo "3" .
#?GND loa:codigo "3" .
#?modalidadeaplicacao loa:codigo "90" .
#?elemento loa:codigo "39" .
#?iduso loa:codigo "0" .
#FILTER (regex (?descUO, "superintendência de seguros", "i")) .
?i loa:valorProjetoLei ?val1 .
?i loa:valorDotacaoInicial ?val2 .
?i loa:valorLeiMaisCredito ?val3 .
?i loa:valorEmpenhado ?val4 .
?i loa:valorLiquidado ?val5 .
?i loa:valorPago ?val6 .
}
} GROUP BY ?codExercicio ?codEsfera ?descEsfera ?codOrgao ?descOrgao ?codUO ?descUO ?codFuncao ?descFuncao ?codSubfuncao ?descSubfuncao ?codPrograma ?descPrograma ?codAcao ?descAcao ?codSubtitulo ?descSubtitulo ?codPlanoOrcamentario ?descPlanoOrcamentario ?codFonte ?descFonte ?codCategoriaEconomica ?descCategoriaEconomica ?codGND ?descGND ?codModalidadeAplicacao ?descModalidadeAplicacao ?codIdUso ?descIdUso ?codResultadoPrimario ?descResultadoPrimario ?codElementoDespesa ?descElementoDespesa ?data
ORDER BY ?codExercicio ?codEsfera ?codOrgao ?codUO ?codFuncao ?codSubfuncao ?codPrograma ?codAcao ?codSubtitulo ?codPlanoOrcamentario ?codFonte ?codCategoriaEconomica ?codGND ?codModalidadeAplicacao ?codIdUso ?codResultadoPrimario ?codElementoDespesa
==== Consulta Órgão, UO, Ação em 2016. O exercício pode ser alterado. ====
SELECT ?codExercicio ?data ?codOrgao ?descOrgao ?codUO ?descUO ?codAcao ?descAcao (sum(?val1) as ?ploa) (sum(?val2) as ?loa) (sum(?val3) as ?lei_mais_credito) (sum(?val4) as ?empenhado) (sum(?val5) as ?liquidado) (sum(?val6) as ?pago) WHERE {
GRAPH {
?i loa:temExercicio ?exercicio .
?exercicio loa:dataUltimaAtualizacao ?data .
?exercicio loa:identificador ?codExercicio .
?UO loa:temOrgao ?orgao .
?orgao loa:codigo ?codOrgao .
?orgao rdfs:label ?descOrgao .
?i loa:temUnidadeOrcamentaria ?UO .
?UO loa:codigo ?codUO .
?UO rdfs:label ?descUO .
?i loa:temAcao ?acao .
?acao loa:codigo ?codAcao .
?acao rdfs:label ?descAcao .
?orgao loa:codigo "39000" .
?i loa:valorProjetoLei ?val1 .
?i loa:valorDotacaoInicial ?val2 .
?i loa:valorLeiMaisCredito ?val3 .
?i loa:valorEmpenhado ?val4 .
?i loa:valorLiquidado ?val5 .
?i loa:valorPago ?val6 .
}
} GROUP BY ?codExercicio ?codOrgao ?descOrgao ?codUO ?descUO ?codAcao ?descAcao ?data
ORDER BY ?codExercicio ?codOrgao ?codUO ?codAcao
===== 3. Consultas sobre Emendas Parlamentares =====
==== Orçamento de Emendas Detalhado para um exercício (2015) ====
Para filtrar use a seção da consulta onde os campos estão desabilitados ((Começam por #)) para definir filtragens. Para emendas os devidos campos já estão filtrados (RP).
SELECT ?codExercicio ?data ?codEsfera ?descEsfera ?codOrgao ?descOrgao ?codUO ?descUO ?codFuncao ?descFuncao ?codSubfuncao ?descSubfuncao ?codPrograma ?descPrograma ?codAcao ?descAcao ?codSubtitulo ?descSubtitulo ?codPlanoOrcamentario ?descPlanoOrcamentario ?codFonte ?descFonte ?codCategoriaEconomica ?descCategoriaEconomica ?codGND ?descGND ?codModalidadeAplicacao ?descModalidadeAplicacao ?codIdUso ?descIdUso ?codResultadoPrimario ?descResultadoPrimario ?codElementoDespesa ?descElementoDespesa (sum(?val1) as ?ploa) (sum(?val2) as ?loa) (sum(?val3) as ?lei_mais_credito) (sum(?val4) as ?empenhado) (sum(?val5) as ?liquidado) (sum(?val6) as ?pago) WHERE {
GRAPH {
?i loa:temExercicio ?exercicio .
?exercicio loa:dataUltimaAtualizacao ?data .
?exercicio loa:identificador ?codExercicio .
?i loa:temEsfera ?esfera .
?esfera loa:codigo ?codEsfera .
?esfera rdfs:label ?descEsfera .
?UO loa:temOrgao ?orgao .
?orgao loa:codigo ?codOrgao .
?orgao rdfs:label ?descOrgao .
?i loa:temUnidadeOrcamentaria ?UO .
?UO loa:codigo ?codUO .
?UO rdfs:label ?descUO .
?i loa:temFuncao ?funcao .
?funcao loa:codigo ?codFuncao .
?funcao rdfs:label ?descFuncao .
?i loa:temSubfuncao ?subfuncao .
?subfuncao loa:codigo ?codSubfuncao .
?subfuncao rdfs:label ?descSubfuncao .
?i loa:temPrograma ?programa .
?programa loa:codigo ?codPrograma .
?programa rdfs:label ?descPrograma .
?i loa:temAcao ?acao .
?acao loa:codigo ?codAcao .
?acao rdfs:label ?descAcao .
?i loa:temSubtitulo ?subtitulo .
?subtitulo loa:codigo ?codSubtitulo .
?subtitulo rdfs:label ?descSubtitulo .
?i loa:temPlanoOrcamentario ?planoorcamentario .
?planoorcamentario loa:codigo ?codPlanoOrcamentario .
?planoorcamentario rdfs:label ?descPlanoOrcamentario .
?i loa:temFonteRecursos ?fonte .
?fonte loa:codigo ?codFonte .
?fonte rdfs:label ?descFonte .
?i loa:temCategoriaEconomica ?categoriaeconomica .
?categoriaeconomica loa:codigo ?codCategoriaEconomica .
?categoriaeconomica rdfs:label ?descCategoriaEconomica .
?i loa:temGND ?GND .
?GND loa:codigo ?codGND .
?GND rdfs:label ?descGND .
?i loa:temModalidadeAplicacao ?modalidadeaplicacao .
?modalidadeaplicacao loa:codigo ?codModalidadeAplicacao .
?modalidadeaplicacao rdfs:label ?descModalidadeAplicacao .
?i loa:temIdentificadorUso ?iduso .
?iduso loa:codigo ?codIdUso .
OPTIONAL {?iduso rdfs:label ?descIdUso }.
?i loa:temResultadoPrimario ?resultadoprimario .
?resultadoprimario loa:codigo ?codResultadoPrimario .
OPTIONAL
{?resultadoprimario rdfs:label ?descResultadoPrimario }.
?i loa:temElementoDespesa ?elementoDespesa .
?elementoDespesa loa:codigo ?codElementoDespesa .
?elementoDespesa rdfs:label ?descElementoDespesa .
?exercicio loa:codigo "2015" .
#?esfera loa:codigo "10" .
#?orgao loa:codigo "39000" .
#?UO loa:codigo "26101" .
#?funcao loa:codigo "26" .
#?subfuncao loa:codigo "122" .
#?programa loa:codigo "2126" .
#?acao loa:codigo "2000" .
#?subtitulo loa:codigo "0001" .
#?planoorcamentario loa:codigo "0000" .
#?fonte loa:codigo "100" .
?resultadoprimario loa:codigo "6" .
#?categoriaeconomica loa:codigo "3" .
#?GND loa:codigo "3" .
#?modalidadeaplicacao loa:codigo "90" .
#?elemento loa:codigo "39" .
#?iduso loa:codigo "0" .
#FILTER (regex (?descUO, "superintendência de seguros", "i")) .
?i loa:valorProjetoLei ?val1 .
?i loa:valorDotacaoInicial ?val2 .
?i loa:valorLeiMaisCredito ?val3 .
?i loa:valorEmpenhado ?val4 .
?i loa:valorLiquidado ?val5 .
?i loa:valorPago ?val6 .
}
}
GROUP BY ?codExercicio ?codEsfera ?descEsfera ?codOrgao ?descOrgao ?codUO ?descUO ?codFuncao ?descFuncao ?codSubfuncao ?descSubfuncao ?codPrograma ?descPrograma ?codAcao ?descAcao ?codSubtitulo ?descSubtitulo ?codPlanoOrcamentario ?descPlanoOrcamentario ?codFonte ?descFonte ?codCategoriaEconomica ?descCategoriaEconomica ?codGND ?descGND ?codModalidadeAplicacao ?descModalidadeAplicacao ?codIdUso ?descIdUso ?codResultadoPrimario ?descResultadoPrimario ?codElementoDespesa ?descElementoDespesa ?data
ORDER BY ?codExercicio ?codEsfera ?codOrgao ?codUO ?codFuncao ?codSubfuncao ?codPrograma ?codAcao ?codSubtitulo ?codPlanoOrcamentario ?codFonte ?codCategoriaEconomica ?codGND ?codModalidadeAplicacao ?codIdUso ?codResultadoPrimario ?codElementoDespesa