Closed MariaRosariaFraraccio closed 1 year ago
Ho separato le modifiche e aggiunto un paio di correzioni minori.
Ho aggiunto i fix per il nome del progetto. La soluzione finale è un pò diversa da quella fatta insieme ora il nome non lo passiamo al loader ma lo settiamo nella sessione per non rompere l'uso dell'api dei loader.
Si può procedere con la gestione degli assiomi import e le correzioni sulla gestione di iri/versione di cui abbiamo parlato.
Ho eliminato la funzione getImports
dal loader perché chiamando poi il plugin verrebbe eseguita due volte.
Per il path invece ho inserito quello locale nel caso in cui riesca a trovare l'ontologia sul disco, altrimenti l'URI, va bene?
Per quanto riguarda il getImports non è un problema se è duplicato, perché la funzione di creazione da file owl la stiamo realizzando indipendente dal plugin. Comunque per ora va bene, lasciamolo sono nel plugin (idealmente dovremmo avere il test di uguaglianza degli oggetti ImportedOntology così da evitare l'aggiunta doppia).
Per il resto c'è da fare una modifica. Se provi ad importare una qualsiasi ontologia con 1 import, il quale non risolve alla IRI specificata, l'operazione termina con una eccezione.
Prova ad esempio ad importare la seguente ontologia:
Ontology(<http://www.semanticweb.org/my/ontology/>
<http://www.semanticweb.org/my/ontology/1.0/>
Import(<http://www.movieontology.org/ontology/>))
Guardando lo stacktrace il problema sta nel modo con cui configuri il MissingImportHandlingStrategy
, sia nel loader che nel plugin, devi cambiare la seguente riga:
manager.getOntologyLoaderConfiguration()
.setMissingImportHandlingStrategy(MissingImportHandlingStrategy.SILENT)
in qualcosa del genere:
config = manager.getOntologyLoaderConfiguration()
config = config.setMissingImportHandlingStrategy(MissingImportHandlingStrategy.SILENT)
manager.setOntologyLoaderConfiguration(config)
perché l'oggetto OntologyLoaderConfiguration
è immutabile, il set
degli attributi restituisce un nuovo oggetto.
Questo chiaramente fa si che la creazione del progetto vada a buon fine, ma gli import mancanti vengono proprio ignorati, senza neanche una notifica. Per il momento possiamo pure lasciarlo così, poi implementeremo un wizard di caricamento delle ontologie mancanti (simile a cosa avviene in protege).
@mnamici ho aggiunto le modifiche che avevamo detto ma ho dovuto lasciare l'emit del segnale nel
doCreateSession
diapplication.py
perché il diagramma non poteva essere attivato prima delsession.show()
.