zaragoza-sedeelectronica / zaragoza-sedeelectronica.github.io

21 stars 5 forks source link

Tenemos api contra contratos? #26

Closed richhl closed 8 years ago

richhl commented 8 years ago

no soy capaz de encontrarlo aqui:

http://www.zaragoza.es/docs-api/

supongo que debería haber dado que punto sparql si que hay.

gracias!

virtor commented 8 years ago

Actualmente la información más completa está almacenada en el punto sparql, en http://www.zaragoza.es/ciudad/gestionmunicipal/contratos/enlace/risp/consultas-perfil-contratante.htm existen ejemplos de consultas y estamos a su disposición para ayudarle si necesita realizar alguna consulta más específica.

richhl commented 8 years ago

gracias @virtor estoy probando un servicio que convierte consultas sparql en apis y cuando trato de ejecutar la consulta https://github.com/zaragoza-sedeelectronica/zaragoza-sedeelectronica.github.io/blob/master/sparql/queries/perfil-contratante/Detalle_Completo.sparql

obtengo el error adjunto en la imagen. (para reproducirlo basta entrar en el servicio http://basil.kmi.open.ac.uk/app e introducir la consulta contra el endpoint de zaragoza)

captura de pantalla de 2015-11-04 11 41 59

podríais darme alguna pista. Sé que la consulta da resultados correctos usándola tal como establecéis aquí https://www.zaragoza.es/ciudad/risp/ayuda.htm , quizá sea algo que tenga que ver con que no se incluya en la consulta el grapho por defecto o algo del estilo (soy newbie con sparql :(

gracias

virtor commented 8 years ago

El error que aparece es porque falta por incluir el prefijo xsd junto al resto de prefijos de la siguiente forma:

PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>

La consulta Detalle_Completo.sparql la vamos a mirar porque tarda mucho en ejecutarse y devuelve un error.

richhl commented 8 years ago

gracias ese error se ha superado pero ahora recibo éste: captura de pantalla de 2015-11-04 13 06 34

virtor commented 8 years ago

El error es al utilizar el group by desde basil, la misma consulta quitando el group by para obtener el número de licitadores y añadiendo el límite de registro funciona en basil y quedaría así:

PREFIX xsd:<http://www.w3.org/2001/XMLSchema#> 
PREFIX pproc: <http://contsem.unizar.es/def/sector-publico/pproc#>
PREFIX s: <http://schema.org/>
PREFIX pc: <http://purl.org/procurement/public-contracts#>
PREFIX gr: <http://purl.org/goodrelations/v1#>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT DISTINCT ?contrato ?nombreContrato ?type ?adjudicatario ?impLicitacionSinIVA ?impLicitacionConIVA ?impCanon 
?impAdjudicacionSinIVA ?impAdjudicacionConIVA ?procedimiento ?entidad ?servicio 
WHERE {
  ?contrato dcterms:title ?nombreContrato;
  pproc:contractObject ?contractObject;
  pproc:managingDepartment ?managing.
  ?tender pc:supplier ?supplier.
  ?managing dcterms:title ?servicio.
  ?supplier s:name ?adjudicatario.
  ?contractObject pproc:contractEconomicConditions ?contractEconomicConditions.
  OPTIONAL{
    ?contractEconomicConditions pproc:budgetPrice ?budgetPriceNOVAT;
    pproc:budgetPrice ?budgetPriceVAT.
    ?budgetPriceNOVAT gr:hasCurrencyValue ?impLicitacionSinIVA;
    gr:valueAddedTaxIncluded "false"^^xsd:boolean.
    ?budgetPriceVAT gr:hasCurrencyValue ?impLicitacionConIVA;
    gr:valueAddedTaxIncluded "true"^^xsd:boolean.
  }
  OPTIONAL {
    ?contractEconomicConditions pproc:feePrice ?feePrice.
    ?feePrice gr:hasCurrencyValue ?impCanon;
    gr:valueAddedTaxIncluded "false"^^xsd:boolean.
  }
  ?tender pc:offeredPrice ?offeredPriceNOVAT;
  pc:offeredPrice ?offeredPriceVAT.
  ?offeredPriceNOVAT gr:hasCurrencyValue ?impAdjudicacionSinIVA;
  gr:valueAddedTaxIncluded "false"^^xsd:boolean.
  ?offeredPriceVAT gr:hasCurrencyValue ?impAdjudicacionConIVA;
  gr:valueAddedTaxIncluded "true"^^xsd:boolean.
    {
      SELECT DISTINCT ?contrato ?procedimiento ?type ?tender ?entidad ?servicio 
        WHERE {
          ?contrato a pproc:Contract;
          a ?type;
          pproc:contractProcedureSpecifications/pproc:procedureType ?procedimiento;
          pc:contractingAuthority/dcterms:title ?entidad;
          pc:tender ?tender;
          pproc:managingDepartment ?managing.
          ?tender a pproc:FormalizedTender;
          pproc:formalizedDate ?formalizedDate.
          ?managing dcterms:title ?servicio.
          FILTER  (regex(?formalizedDate, "2014")) 
        } 
    } 

}
LIMIT 1000
richhl commented 8 years ago

gracias! en cuanto a errores en la consulta, como te comentaba yo no los recibo atacando con javascript y representando con d3, te refiero el ejemplo aquí https://github.com/isiargonauta/openmadness la llamada que estoy haciendo y el resultado es:

Object {contrato: "http://www.zaragoza.es/api/recurso/sector-publico/contrato/1128970-13", 
nombreContrato: "CONTRATACIÓN DEL SERVICIO DE BAR EN LA SALA DE CONCIERTOS DEL CENTRO DE ARTES PARA JÓVENES EL TUNEL ", 
type: "http://contsem.unizar.es/def/sector-publico/pproc#ContractWithoutLots",
adjudicatario: "MARTEGRA, S.L.",
contrato: "http://www.zaragoza.es/api/recurso/sector-publico/contrato/1128970-13",
entidad: "Ayuntamiento de Zaragoza",
impAdjudicacionConIVA: "4250",
impAdjudicacionSinIVA: "4250",
impCanon: "200",
impLicitacionConIVA: "200",
impLicitacionSinIVA: "200",
nombreContrato: "CONTRATACIÓN DEL SERVICIO DE BAR EN LA SALA DE CONCIERTOS DEL CENTRO DE ARTES PARA JÓVENES EL TUNEL ",
numLicitadores: "6",
procedimiento: "http://contsem.unizar.es/def/sector-publico/pproc#RegularOpen",
servicio: "Consejería de Participación Ciudadana y Régimen Interior",
type: "http://contsem.unizar.es/def/sector-publico/pproc#ContractWithoutLots"
virtor commented 8 years ago

A nosotros al probar la consulta nos ha dado errores de tiempo de ejecución que hemos solucionado añadiendo el LIMIT 1000, el tema del group by parece error de basil.

richhl commented 8 years ago

basil hace la petición pero parece que el endpoint devuelve content type text/html y esto impide que se genere el api, ¿es normal? me parece curioso porque entiendo que el endpoint no debería devolver por defecto ese content type. Os pego el error y un enlace por si queréis reproducir http://basil.kmi.open.ac.uk/app/#/basil/1iv9tmq56bdx5

HTTP/1.1 500 Internal Server Error
Date: Wed, 04 Nov 2015 13:17:15 GMT
Server: Jetty(9.3.z-SNAPSHOT)
X-Basil-Error: Endpoint returned Content-Type: text/html which is not currently supported for SELECT queries
Content-Type: application/json
Content-Length: 109
Connection: close

{ "error" : "Endpoint returned Content-Type: text/html which is not currently supported for SELECT queries" }

virtor commented 8 years ago

Creo que es porque falta el LIMIT 1000 por lo que el punto SPARQL está devolviendo el error que te decía de timeout

richhl commented 8 years ago

gracias, pero no debe ser por eso porque cambié el limit y me da el mismo error.

virtor commented 8 years ago

Puedes mirar http://basil.kmi.open.ac.uk/app/#/basil/1ieuyhngzsp4k creo que está funcionando

richhl commented 8 years ago

que bien gracias!!!! :)

richhl commented 8 years ago

Ya me han contestado sobre el group by, es un tema de sintaxis, mira en https://github.com/the-open-university/basil/issues/48 con la solución, ya está el api marchanod con la consulta con group by.

voy a solicitaros un PR con el query modificado.

salud