Schemi OpenAPI¶
Gli schemi pubblicati devono essere conformi alle relative Linee guida nazionali.
Gli schemi DEVONO utilizzare delle directory versionate come descritto in versionamento.
Gli schemi per le API devono essere pubblicati in formato OpenAPI3 (corrispondenti ad una estensione di JSON Schema Draft 4), incorporato nella sezione #/components/schema
del file OAS compatibilmente con le Linee Guida per l’interoperabilità tecnica.
L’estensione del file DEVE essere .oas3.yaml
.
In futuro potranno essere supportati altri formati di schemi (e.g. versioni più recenti di JSON Schema).
Il file YAML DOVREBBE contenere i riferimenti semantici descritti nel documento I-D-polli-restapi-ld-keywords attraverso:
il campo custom
x-jsonld-context
contenente un@context
JSON-LD conforme alle indicazioni contenute in JSON-LD 1.1;il campo custom
x-jsonld-type
contenente il riferimento ad unrdf:type
.
I metadati associati DEVONO essere pubblicati solo in formato RDF/Turtle (media type text/turtle
)
e l’estensione del file DEVE essere .ttl
.
Questo file DOVREBBE essere generato automaticamente dal documento OpenAPI.
Gli schemi forniti POSSONO essere verificati sintatticamente utilizzando l’OpenAPI Checker.
Schema bundling¶
Quando si pubblica un documento OAS contenente la specifica di un’API, è utile dereferenziare ed accorpare in un unico file tutti i riferimenti a schemi ed operazioni. Questo processo viene detto bundling. Il prodotto sarà un singolo OAS document (e.g. un file YAML) utile alla validazione sintattica e semantica dell’API. Questo meccanismo permette di inserire nell’IDL tutte le informazioni semantiche necessarie a descrivere l’API in base sia ai riferimenti ontologici che agli schemi utilizzati.
Esempi¶
Un esempio di file OAS3 metadatato con i campi x-jsonld-context
e x-jsonld-type
:
openapi: 3.0.1
...
components:
schemas:
Person:
type: object
x-jsonld-type: "https://w3id.org/italia/onto/CPV/Person"
x-jsonld-context:
"@vocab": "https://w3id.org/italia/onto/CPV/"
nome_proprio: givenName
cognome: familyName
properties:
nome_proprio: {type: string, ..}
cognome: {type: string, ..}
...
Di seguito l’esempio di un’alberatura contenente uno schema
assets/
schemas/
Person/
CHANGELOG.md
README.md
person.oas3.yaml
person.index.ttl
Schemi XSD¶
Attualmente il materiale semantico pubblicato dalla UE si basa sui formati RDF ed XSD. NDC non supporta il processamento di file XSD. Questi potranno essere supportati in un secondo momento.
Versionamento¶
TBD