daf-ontologie-vocabolari-controllati icon indicating copy to clipboard operation
daf-ontologie-vocabolari-controllati copied to clipboard

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

Open ioggstream opened this issue 3 years ago • 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

ioggstream avatar Nov 17 '21 16:11 ioggstream

@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 ?

ioggstream avatar Nov 19 '21 12:11 ioggstream

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.

giorgialodi avatar Nov 19 '21 12:11 giorgialodi

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

ioggstream avatar Nov 19 '21 12:11 ioggstream

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.

giorgialodi avatar Nov 19 '21 12:11 giorgialodi

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

giorgialodi avatar Nov 19 '21 12:11 giorgialodi

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!

ioggstream avatar Nov 19 '21 13:11 ioggstream

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.

ioggstream avatar Nov 19 '21 13:11 ioggstream

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 https://github.com/essepuntato/LODE/issues/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
        }

ioggstream avatar Dec 14 '21 09:12 ioggstream