obdasystems / sparqling-ws

RESTful web services for Sparqling: point and click SPARQL editor based on Grapholscape

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SimpleDeductiveClosure non termina su ontologia ISTAT

giacomoronconiobda opened this issue · comments

Ho aspettato 10 minuti dopodiché ho stoppato.

ISTAT-SIR_v1.1.37.graphol.zip

ISTAT è l'unica su cui si verifica?
Ad esempio, INAIL, Wolf, qualcuna di quelle che abbiamo fatto per Almawave?

Un tempo così lungo mi fa pensare o ad un errore di qualche tipo oppure a un loop che si crea da qualche parte, ovviamente non può essere nè un problema di parsing nè di tempo di chiusura, l'ontologia di per sè non è enorme.

Probabilmente vuol dire che dobbiamo riscrivere l'algoritmo.

Il file dell'ontologia non viene proprio parsato. Questa è l'eccezione ritornata dal parser:

[Fatal Error] :1:1: Content is not allowed in prolog.
Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at com.obdasystems.sparqling.parsers.GraphOLParser_v3.parseOWLOntology(GraphOLParser_v3.java:474)
at com.obdasystems.sparqling.engine.TestOntologyProximityManager.main(TestOntologyProximityManager.java:25)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at com.obdasystems.sparqling.parsers.GraphOLParser_v3.parseOWLOntology(GraphOLParser_v3.java:185)
... 1 more

Questo se lo lancio dal branch "owlapi". Se lo lancio dal branch "master" il progetto non compila proprio e mi ritorna
C:\Users\Utente\Documents\IntelliJ-Ultimate\sparqling-ws\src\main\java\com\obdasystems\swagger\tools\ImportCode.java:4:15
java: package sun.awt does not exist

Probabilmente vuol dire che dobbiamo riscrivere l'algoritmo.

Eh no appunto, intendevo che mi pare difficile sia un problema di algoritmo, più probabile infatti che sia un errore di parsing, oppure di una cosa specifica nell'ontologia (tipo un assioma particolare) che gli dà problemi.

Il file dell'ontologia non viene proprio parsato. Questa è l'eccezione ritornata dal parser:

[Fatal Error] :1:1: Content is not allowed in prolog. Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. at com.obdasystems.sparqling.parsers.GraphOLParser_v3.parseOWLOntology(GraphOLParser_v3.java:474) at com.obdasystems.sparqling.engine.TestOntologyProximityManager.main(TestOntologyProximityManager.java:25) Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at com.obdasystems.sparqling.parsers.GraphOLParser_v3.parseOWLOntology(GraphOLParser_v3.java:185) ... 1 more

Bisognerebbe vedere lo stack trace intero per trovare l'errore prodotto dal parser corretto (ovvero quello corrispondente alla sintassi OWL in cui viene tradotto il graphol).
Qui sta semplicemente dicendo che il parser SAX fallisce perchè l'intestazione dell'ontologia non è quella che si aspetta, il che è normale dato che sicuramente non serializziamo in quel formato (più probabilmente in FunctionalStyle).

No ma è il Graphol (che quindi è in xml) che non vine parsato correttamente. La cosa strana è che lo stesso file viene aperto da Eddy senza problemi....

Eh si, credo sia la stessa identica ontologia ISTAT che vediamo noi durante il progetto. Cioè, l'abbiamo fatta proprio noi.

Esportando l'owl da eddy e lavorando direttamente su quello, la chiusura deduttiva viene fatta in circa 10 secondi

Siamo sicuri che non sia un problema del parser che dal Graphol cerca di ricavare l'OWL che poi viene dato in pasto all'algoritmo di chiusura deduttiva?
Mi sembra comunque strano perchè quell'ontologia Monolith la gestisce senza problemi...

Certo che è un problema del parser, solo che è un problema delle librerie standard per XML non del codice nostro. Ho provato a caricare la stessa ontologia su monolith e il parser di mastro se la mangia senza problemi

Era sbagliato il modo in cui veniva usato il parser nella classe di test di @NonnonePalmiro.