The open data policies of the city council of Zaragoza, which have been implemented for more than 10 years, make the city operate an open-data-by-default policy for all the public sector information that the city council is handling. The city council of Zaragoza providesAPI and SPARQL endpoint on the areas of public procurement (tenders) and invoices in its open data portal.

Public procurement data (tenders) are made available at the open data portal in the Perfil del Contratante dataset. By browsing the metadata from this dataset, you will see that data are made available via the Zaragoza SPARQL endpoint. This RDF data is organised according to the Public Procurement Ontology (PPROC).

Data about invoices are available on the Zaragoza open data API, (more specifically at https://www.zaragoza.es/docs-api_sede/#/Ayuntamiento:_Facturas).

The API returns several types of formats, depending on the dataset (JSON, CSV, TTL, JSON-LD, GeoJSON, etc.). for example the response to www.zaragoza.es/sede/servicio/factura/24 is:

XML output from Ayuntamiento de Zaragoza API.

Output from Ayuntamiento de Zaragoza API.

The Zaragoza API currently supports both http and https, and can be used without or with API keys (the latter recommended for 3rd party developers), with no usage limits in any of the cases.

Main API characteristics

Identifiers. Zaragoza follows Linked Data principles in the generation of identifiers for the resources that are made available in the API (as well as those used in the triple store that stores RDF and provides the SPARQL endpoint). Identifiers are usually composed of a base URI (https://www.zaragoza.es/sede/<>/<>/<>). This follows the Spanish Norma Técnica de Interoperabilidad (NTI) guidelines.

Versioning. The API does not currently support versioning. The same applies to the RDF knowledge graph.

Pagination. Those calls returning a number of results (e.g., invoice searches) return a paginated response. By default, 50 objects are returned (although this can be further specified with the parameter rows). The start parameter allows establishing the page number that we may want to return (e.g., ?start=4 to access page number 4).

Provenance. All information comes from the city council. Therefore, no specific provenance is recorded. In any case, the metadata for each of the accessed data sources specifies the actual source of the whole dataset.

Filters. Filters can be applied to any of the records returned in the JSON objects returned by the API. Besides, there is the possibility of evaluating more complex expressions in the FIQL query language (parameter q), as well as specifying the columns/attributes that will be provided as a result (parameter fl).