La ricerca dei dati nel RNDT è possibile anche tramite API REST. Per interrogare il Catalogo, l’URL da utilizzare è il seguente:
https://geodati.gov.it/RNDT/rest/find/document? <parametro>&<parametro>&…
dove <parametro> è uno dei parametri REST disponibili. Di seguito sono elencati quelli principali.
Parametro | Descrizione | Valori accettati |
bbox | Estensione indicata come due coppie di coordinate (ovest-sud e est-nord). | Valori di latitudine e longitudine separati da virgole. |
spatialRel | Relazione spaziale, da utilizzare in associazione con il parametro bbox. | Valore stringa a scelta tra: esriSpatialRelWithin (default), esriSpatialRelOverlaps. |
searchText | Testo. | Stringa. È possibile utilizzare anche searchText=sys.schema.key per ricercare i metadati che corrispondono ad uno schema specifico. Gli schemi possibili nel RNDT sono i seguenti: rndt-dataset, rndt-nuoveacq, rndt-raster, rndt-series, rndt-services. (ATTENZIONE: il segno - nella sintassi Lucene è un operatore di esclusione. Per cui nelle richieste sostituire il segno - con il segno ?). |
dataCategory | Categoria tematica del dataset, definita nello Standard ISO 19115 (enumerazione TopicCategoryCode). | Valori separati da virgola. |
after, before | Date per identificare un intervallo temporale. | Date nel formato yyyy-mm-dd |
orderBy | Ordinamento risultati. | Uno fra: areaAscending, areaDescending, dateAscending, dateDescending (default), format, relevance, title. |
start | Numero del primo record da considerare. | Intero. Se utilizzato insieme al parametro max, fornisce l'impaginazione dei risultati della ricerca. |
max | Numero massimo di risultati. | Interno. Valore massimo: 5000, default: 10. Se utilizzato insieme al parametro start, fornisce l'impaginazione dei risultati della ricerca. |
f | Formato della risposta. | Un valore fra: georss (default), atom, json, pjson, xjson (compatibile con geojson 1.0), dcat, kml, html, htmlfragment, CSV. |
maxSearchTimeMilliSec | Tempo massimo per la risposta. | Intero. Il valore di default è 5000 millisecondi. |
filter | Può essere applicato un filtro all'interfaccia di ricerca. | Sintassi della query basata su Lucene. |
Per maggiori dettagli fare riferimento alla pagina REST API Syntax del repository GitHub geoportal-server.
Il motore di ricerca è basato su Apache Lucene. Per sfruttare al meglio la ricerca, può essere utile conoscere la sintassi delle query Lucene per le ricerche di testo.
Gli elementi interrogabili da utilizzare nelle ricerche nel RNDT sono elencati qui. Essi includono i criteri di ricerca indicati nelle linee guida INSPIRE sui servizi di ricerca.
Nelle pagine della guida online relativa alla ricerca dettagliata sono disponibili ulteriori dettagli anche relativamente all'utilizzo di operatori booleani, operatori jolly e operatori di inclusione/esclusione.
Di seguito si riportano alcuni esempi esplicativi.
ESEMPIO 1
Ricerca di tutti i dati che hanno come tema INSPIRE Idrografia (searchText=INSPIRETheme:Idrografia). INSPIRETheme è uno dei criteri di ricerca. La ricerca è limitata ai primi 300 record (start=1 e max=300) e i risultati visualizzati in formato pjson (f=pjson) con ordinamento basato sul titolo.
Al posto del parametro searchText si può utilizzare il parametro filter ottenendo lo stesso risultato. La richiesta diventa:
ESEMPIO 2
Ricerca di tutti i dati che contengono le parole "carta" e "geologica" nel titolo, con massimo 50 risultati (max=50) a cominciare dal 20° record (start=20) visualizzati in HTML (f=html) ordinati secondo il titolo stesso (orderBy=title).
Si possono avere più casi.
Se il testo viene inserito tra virgolette (searchText=title:"carta geologica"), la ricerca restituisce tutti i record che contengono esattamente il testo inserito (le due parole una dopo l'altra così come inserite).
Se le due parole sono inserite senza virgolette (searchText=title:carta geologica), la ricerca restituisce tutti i record che contengono "carta" nel titolo e "geologica" in qualsiasi campo, in quanto, quando non specificato, il criterio di default è text.
Se le due parole sono inserite con l'operatore AND (searchText=title:carta AND geologica), la ricerca restituisce tutti i record che contengono entrambe le parole (non necessariamente una dopo l'altra così come inserite).
ESEMPIO 3
Esempio con l'utilizzo di operatori jolly e operatori di inclusione/esclusione. Ricerca dei primi 50 metadati (start=1 e max=50) che contengono la parola "suolo" e non contengono la parola "natura" (-natura). Risultati ordinati secondo il titolo (orderBy=title) e risposta in formato json (f=json).
Ricerca come sopra, ma con metadati contenenti la stringa "suo" (*suo*) e non contenenti parole che iniziano con la sillaba "na" seguita da due caratteri e che finiscono con la sillaba "ra" (na??ra)
ESEMPIO 4
Ricerca di uno specifico record tramite l'ID del file di metadati (fileIdentifier) che ritorna l'XML del metadato.
https://geodati.gov.it/RNDT/rest/document?id=ispra_rm:0029CNATHB_DT
Le specifiche delle API di RNDT secondo lo standard OpenAPI sono disponibili qui: https://developers.italia.it/it/api/geodati