italia/daf-ontologie-vocabolari-controllati

Ontologie: definire processo di build di RDF e jsonld a partire dal turtle

Opened this issue · 8 comments

Mi aspetto

  • che per le ontologie, il processo di build degli RDF e dei JSONLD sia automatico e definito
  • che tutti gli altri file vengano generati a partire dai TTL

Note

  • va verificato che i file assemblati funzionin ancora con w3id.org
  • si potrebbe sperimentare a partire da una sola ontologia e testare su quella
  • modifiche sintattiche o di formattazione/serializzazione di JSONLD e RDF non fanno variare la versione dell'ontologia
  • va valutata la possibilità di avere dei linter per il formato turtle in modo da minimizzare i diff

@giorgialodi come mai in alcuni jsonld c'è direttamente il grafo, eg Ontologie/Project/latest/Project-AP_IT.jsonld

-[
-  {
-    "@id": "_:genid1",
-    "@type": [
-      "http://www.w3.org/2000/01/rdf-schema#Datatype"
-    ],
-    "http://www.w3.org/2002/07/owl#oneOf": [
-      {

ed in altre c'è anche il contesto?


{
  "@context": ...,
  "@graph": [...]
}

Possiamo standardizzare serializzando tutto con @context e @graph ?

I json-ld di tutte le ontologie e i vocabolari controllati sono sempre stati generati attraverso convertitori automatici o usando il formato json-ld di editor come protégé, partendo dal turtle. I diversi modi quindi dipendono quasi sempre da questi strumenti.

Mi confermi che sono equivalenti? Nel caso rigeneriamo usando - quando possibile - algoritmi di canonicalizzazione, eg. https://www.w3.org/TR/xml-exc-c14n/

Equivalenti tra loro dici quei due che citavi sopra? Se sì, dovremmo verificarlo con dei validatori json-ld, ma se i json-ld sono generati da convertitori disponibili allo stato dell'arte, qual è precisamente il problema?
Altro punto è io personalmente preferisco la struttura context e graph perché più chiara.

Tra l'altro @ioggstream, rileggendo questo:

ogni modifica di questo tipo, aumenta la versione dell'ontologia, quindi si crea una nuova versione dove RDF e JSONLD sono generati_

Direi proprio di no perché la versione nuova dell'ontologia dipende solo dal suo contenuto non dalla serializzazione. Quindi se aggiungo elementi all'ontologia allora si crea nuova versione, se devo correggere typos, non c'è nuova versione, se devo produrre altre serializzazioni, la versione non c'entra

la versione nuova dell'ontologia dipende solo dal suo contenuto non dalla serializzazione
se devo correggere typos, non c'è nuova versione

Ok, questo lo aggiungiamo alle policy!

In #113 i file rdf e jsonld sono ora validi e generati a partire dal turtle. Nessuna modifica all'ontologia, quindi la versione resta la stessa.

Nota: esistono diversi modi equivalenti di serializzare i file RDF, ma le applicazioni di rendering non li supportano tutti.
In particolare LODE usa xslt per processare/visualizzare i dati, e non riesce quindi a processare correttamente le entry nidificate. Vedi essepuntato/LODE#36

Per la serializzazione su Ontopia via rdflib va usato il parametro max_depth=1 col serializzatore pretty-xml.

from rdflib import Graph
g = Graph()
g.parse("file.ttl")
g.serialize(format="pretty-xml", max_depth=1, destination="file.rdf")

I parametri da passare per i json-ld sono

{
"format": MIME_JSONLD, 
        "auto_compact": True,
        "context_data": True
        }