obdasystems / eddy

A graphical editor for the specification and visualization of Graphol ontologies
GNU General Public License v3.0
55 stars 7 forks source link

[BUG]: Creazione progetto da file OWL #280

Open valeriosantarelli opened 1 month ago

valeriosantarelli commented 1 month ago

Describe the bug

Il tentativo di inizializzare un progetto dal file in allegato (o importarlo in una ontologia già creata), produce prima l'errore che si vede nello screenshot sotto, e poi il freeze dell'applicazione.

ontologiaCamera.owl.zip

Screenshot 2024-05-21 alle 23 29 36

Reproduction Steps

Per riprodurre, selezionare Create project from OWL file, e scegliere il file allegato.

Screenshot 2024-05-21 alle 23 36 09

Expected Result

Il risultato atteso è una ontologia graphol contenente l'ontologia OWL selezionata, opportunamente disegnata.

Actual Result

Gli errori di cui sopra.

Affected Versions

3.5.2

Installation

macOS dmg

Operating System

macOS

Operating System Version

macOS 14.2.1

Operating System Architecture

x86_64

Log

No response

mnamici commented 1 month ago

Riporto un pò di considerazioni da una prima sessione di debug.

Il messaggio di errore è dovuto al fatto che non supportiamo in eddy annotazioni i cui soggetti od oggetti sono individui anonimi, tranne in casi precisi (es. annotazioni di alcuni assiomi logici). Allo stato attuale supportare questa funzione richiede un intervento significativo ma fattibile in un pò di tempo.

Il messaggio però è innocuo, il fatto che si pianti è legato ad uno strano comportamento di owlapi, in particolare una variante della nota issue sulla gestione degli import risolta con uno switch temporaneo alla versione downstream per owlapi 5, ma ancora più strano nella versione inclusa in eddy che è molto datata. In particolare ho notato che c'è una sorta di race condition, dove alcune volte si pianta (in un loop di importazioni a cascata), in altre funziona ma sbaglia la provenienza delle entità.

Per risolvere (escluse le annotazioni di individui anonimi) per prima cosa dobbiamo provare ad aggiornare le owlapi incluse in eddy (l'ultima versione 4 ufficiale include il fix), ho un branch sperimentale che include il supporto a java 17 e nuovo build di owlapi, a breve metto i link per scaricare un build di prova.

mnamici commented 1 month ago

Ho aggiornato owlapi alla 4.5.29.

Potresti provare se con il build seguente riesci a caricare l'ontologia?

https://github.com/obdasystems/eddy/actions/runs/9198915778

Potrebbe sembrare che l'applicazioni si blocchi per 4/5 secondi ancora ma poi mi pare che stia completanto il caricamento, ci sono delle parti bloccanti nel plugin di importazione ma non ho capito esattamente in che fase.

In particolare potresti verificare dall'ontology manager il Document Path dell'ontologia skos importata come viene impostato?

EDIT: dimenticavo di dire che se hai forzato la chiusura dell'app potrebbe dirti che l'ontologia è già associata al progetto, questo perché il db rimane in uno stato inconsistente, in tal caso prova ad eliminarlo e a rifare l'importazione.

Il db va in ~/Library/Application Support/eddy/imports.sqlite in macOS.

MariaRosariaFraraccio commented 1 month ago

Con questo build ci mette un po' ma funziona, gli unici assiomi che non riesce a importare sono quelli che coinvolgono gli individui anonimi.

mnamici commented 1 month ago

Ok grazie, per caso hai visto il Document Path che specifica per l'import di skos nell'ontology manager? Perché a me vengono fuori percorsi che non c'entrano niente quindi sto cercando di capire se si tratta di un'altro bug (nostro o di owlapi)

MariaRosariaFraraccio commented 1 month ago

Come Document Location c'è http://www.w3.org/2004/02/skos/core

mnamici commented 1 month ago

Ok quello è corretto. A quanto pare io sono incappato in una (feature?) di owlapi di cui non ero a conoscenza, ma questo è un altro discorso...

C'è ancora da capire a cosa è dovuta la parte bloccante ora.

mnamici commented 1 month ago

Ho fatto il merge dell'aggiornamento a owlapi 4.5.29 che contiene il fix degli import, a breve su actions ci saranno i build da develop disponibili.

Per il discorso del supporto ai blank node bisognerebbe proprio implementarlo, se ritenete che sia una feature con priorità alta posso iniziare a occuparmene.

valeriosantarelli commented 1 month ago

No, direi di no. Non capisco bene l'utilità di una annotazione su un blank node (rappresenta un assioma)?

Per il momento tralasciamo.

mnamici commented 1 month ago

Ok, in questo caso escono fuori dalla reificazione delle note storiche, si vede che raggruppano una collezione di annotazioni ad un dato istante (come uno stato).