obdasystems / grapholscape Goto Github PK
View Code? Open in Web Editor NEWWeb viewer for ontologies written in Graphol
Home Page: https://obdasystems.github.io/grapholscape/
License: MIT License
Web viewer for ontologies written in Graphol
Home Page: https://obdasystems.github.io/grapholscape/
License: MIT License
I ruoli che sono figli di altri ruoli e non hanno dominio/range esplicitato non devono andare persi.
Aggiungere arco ruolo con stesso dominio/range del padre
Mi pare che per quelle entità che hanno un namespace a cui è associato il prefisso vuoto, il rendering viene fatto con "undefined" invece che semplicemente con ":".
Allego un file .graphol per riprodurre l'errore.
Una doppia inizializzazione di Grapholscape in una finestra genera la seguente eccezione:
Can not register `popper` for `core` since `popper` already exists in the prototype and can not be overridden
at error (cytoscape.cjs.js:811)
at overrideErr (cytoscape.cjs.js:31171)
at setExtension (cytoscape.cjs.js:31176)
at Function.extension (cytoscape.cjs.js:31383)
at cytoscape (cytoscape.cjs.js:31506)
at register (cytoscape-popper.js:385)
at Function.push../node_modules/cytoscape/dist/cytoscape.cjs.js.cytoscape.use (cytoscape.cjs.js:31516)
at new FloatingGscapeRenderer (grapholscape.esm.js:18153)
at new GrapholscapeView (grapholscape.esm.js:19075)
at GrapholScape.init (grapholscape.esm.js:21322)
at new GrapholScape (grapholscape.esm.js:21312)
at Graphol._this.loaded (GrapholscapeNpm.js:22)
at MastroApi.js:195
Concept and role nodes that are left disconnected from the rest of the diagram as a result of applying a filter condition (e.g. forall) should be filtered as well.
This only applies to nodes that are left without any outgoing/incoming edge, and does not apply to entire disconnected subcomponents of the diagram.
Some straight arrows are sometimes not perfectly straight and appear to be skewed.
You can find an example in the LUBM ontology: arrows connecting person and domains of attributes age and email, are a bit skewed and it gets more clear selecting them.
I observed this bug only on vertical straight arrows with no intermediate breakpoints and only on arrows whose endpoints (one or both) are not in the node's center.
In all cases that I analyzed so far the endpoints have the same X-position, meaning that arrows connecting them should be vertically straight.
Non si è in grado di visualizzare la traduzione dell'esistenziale sul range di un attributo perchè per tradurre gli esistenziali Grapholscape usa ObjectSomeValuesFrom e non Object/DataPropertyDomain/Range.
Per tradurre il range di un attributo dovrebbe quindi esprimere in OWL l'inverso di un attributo, il che non è possibile.
In generale si dovrebbe quando possibile (anche splittando l'arco di equivalenza) usare gli assiomi ObjectPropertyDomain, ObjectPropertyRange, DataPropertyDomain, e DataPropertyRange,
For individual nodes, remove the "Wiki" field in the Detail menu.
The wiki system in Mastro Studio currently does not support individuals in the Ontology Documentation module, so the links to the corresponding pages are broken.
Attualmente Grapholscape supporta una ricerca nell'Explorer Widget per Label, ma sembra funzionare solo per la prima label in ciascuna lingua (o comunque, se non la prima, una sola).
Nell'ontologia allegata, sono definite queste label per la classe woc:Vehicle
:
AnnotationAssertion(rdfs:label woc:Vehicle "Automobile"@it)
AnnotationAssertion(rdfs:label woc:Vehicle "Vehicle"@en)
AnnotationAssertion(rdfs:label woc:Vehicle "Veicolo"@it)
Se setto la lingua a "EN", e cerco Vehicle
, la classe viene trovata; se setto la lingua a "IT" e cerco Veicolo
, la classe viene trovata, ma se cerco Automobile
, allora la classe NON viene trovata.
Il sistema dovrebbe supportare una ricerca su tutte le label definite per le entità dell'ontologia.
In the Detail menu, the entity types are currently "concept", "role", "attribute".
I think it's better to adopt the OWL alphabet, and use, respectively, "class", "object property", "data property".
Controllare fake nodes
Attualmente la viewport viene reimpostata e centrata sul diagramma ad ogni cambio di diagramma e/o renderer (graphol, lite, float).
Sarebbe più comodo lasciare la viewport ferma al cambio diagramma in modo che quando si torna su un diagramma la "posizione" sia la stessa dell'ultima interazione?
Ho introdotto questa cosa in d8c3faf, la lascio?
Mi pare che l'allineamento delle label in Grapholscape sia tale che in sostanza l'ultima riga sia sempre centrata verticalmente rispetto all'elemento (in particolare le classi quindi).
Questo non comporta particolari problemi se la label è al massimo su due righe.
Se invece ci sono due a capi o più (quindi tre o più righe), l'allineamento fa sì che la label esca "da sopra" rispetto al perimetro delle classi, pur avendo spazio sotto (cosa che ad esempio in Eddy non avviene).
Allego screenshot per mostrare qualche esempio.
Credo che si dovrebbe impostare l'allineamento in modo tale che il centro della label sia allineato con il centro dell'elemento.
Ovviamente tutto ciò a meno che non sia l'utente manualmente a spostare la label (a quel punto sono cavoli suoi).
Is there any way that I can use grapholscape with *.owl files instead of *.graphol files, or is there a recommended convertor that can convert our owl files to graphol files?
I'm trying to use this with my OWL files as input, any help would be appreciated, thank you in advance!
Visualizzare il data type (xsd:string
etc...) nel widget entity details quando viene selezionato l'attributo.
Problema in v1.3.0.
Quando un pulsante di sblocco di un nodo finisce fuori dalla viewport in basso, viene aggiunto e rimosso continuamente rimanendo visibile a schermo.
Quando il nodo esce in alto il pulsante rimane fisso visibile, quando esce verso destra si allunga il container.
Gli archi con un breakpoint sul bordo del nodo target/source, non vengono al momento visualizzati in grapholscape. Cytoscape ha problemi con questo tipo di breakpoint.
Possibile soluzione: modificare il parametro weight del breakpoint in modo da allontanarlo dal nodo.
Per ovviare al problema delle etichette "instanceOf" sugli archi appunto di InstanceOf, in Eddy abbiamo modificato la forma dell'arco, che non è più un arco di inclusione semplice con l'etichetta scritta sopra, ma adesso è un arco puntato con una freccia bianca alla fine.
Questo è con il rendering vecchio:
Bisognerebbe quindi anche in Grapholscape aggiornare il rendering di questo tipo di archi.
Allego l'ontologia da cui sono tratti gli screenshot così c'è un esempio.
C'è un problema di spaziatura nel widget che causa l'andata a capo del pallino "Project IRI".
Già che ci siamo, capiamo se quella dicitura "Project IRI" ha qualche senso. La mia idea è che non ne abbia, e si può togliere del tutto.
Viene riportato l'errore:
nodo.data.label.replace is not a function
Qui l'ontologia: https://github.com/obdasystems/inail-almawave/blob/master/ontologia/INAIL/INAIL.graphol
Implementare il supporto per la visualizzazione a pallocchi delle ontologie OWL.
Quando l'ontologia non è stata disegnata direttamente in Graphol, sarebbe comunque comodo (anche in previsione di uno strumento di query) poter avere la visualizzazione Floaty, che dovrebbe essere più semplice, perchè non ha il problema del posizionamento, e non deve disegnare assiomi complessi.
L'entity details nella modalità incrementale/virtual KG explorer avrà circa questa forma.
Il dubbio è se inserire qui dentro i comandi per espandere le gerarchie/rimuovere nodi o se metterli in un widget apposito.
La sensazione che ho è che questo widget stia diventando troppo "carico" di informazioni e che in fondo i pulsanti per le gerarchie e rimozione di un nodo non siano dei dettagli di un'entità e possano anche vivere da soli ad esempio nel menu contestuale.
Mi sono reso conto che al momento non vengono visualizzate le funzionalità nei diagrammi (nè di ruoli nè di attributi).
Sto facendo riferimento alla versione di Grapholscape che sta dentro Monolith.
E' possibile che sia un effetto del passaggio alla v3 di Eddy, in cui le funzionalità sono definite un pò diversamente nel file, e non ci siamo allineati su questo?
I filtri vengono sincronizzati e riapplicati solo al primo cambio di renderer, nei successivi cambi non vengono aggiornati.
Implementare una modalità alternativa della visualizzazione Floaty, che mantiene sempre gli stessi elementi grafici, ma posiziona i pallocchi delle classi nelle coordinate delle classi nei diagrammi Graphol.
Issue forse legata alla #5
Mi pare che tutte le frecce di attributi per i quali l'arco non è agganciato al centro del nodo classe vengono storte, o nell'aggancio con il quadratino bianco (layout Graphol), oppure proprio con l'attributo (layout Graphol-Lite).
Il comportamento dei toggle per i filtri attualmente è inverso allo stato del filtro stesso.
Il toggle è visivamente attivato quando il filtro corrispondente è disattivato e questo potrebbe creare qualche problema per gli utenti.
Durante il refactoring (6a29e2a) poi ho aggiunto un toggle 'all' per attivare tutti i filtri contemporaneamente e questo ha il comportamento inverso agli altri: quando viene attivato tutti i filtri devono essere attivati, che visivamente si traduce nella disattivazione di tutti i toggle.
Credo che usando i toggle la scelta sia fondamentalmente tra rappresentare visivamente lo stato del filtro oppure la presenza o meno sul grafo dei nodi coinvolti, attualmente grapholscape usa la seconda opzione. È il caso di cambiare rappresentazione?
Feature tracking per la visualizzazione semplificata dell'ontologia.
✔️ Done | 🔸 Pending | ❔ Not Clear
Elenco costrutti che vengono eliminati usando le procedure di filtraggio, andando quindi a filtrare ricorsivamente i vicini che perdono di significato.
Costrutto | Stato | Commit |
---|---|---|
DataTypes | ✔️ | 594db5d |
Quantificatori Universali | ✔️ | 594db5d |
Esistenziali Qualificati | ✔️ | 594db5d |
Esistenziali con cardinalità | ✔️ | 124c7d8 |
Role Chain | ✔️ | 124c7d8 |
Negazioni | ✔️❔ | 594db5d |
Gerarchie complesse* | ✔️ | 1474d85 |
Enumerazioni | ✔️ | 7a5c8c9 |
* Nodi costruttori (or/and/disjoint-or) con altri nodi costruttori in input
Elenco delle trasformazioni applicate a costrutti e/o assiomi.
Stato: ✔️❔ | Commit: a5db64c
Tutti gli archi non di tipo input collegati all'esistenziale vengono concatenati all'arco di tipo input connesso alla property (object/data).
Il nodo esistenziale viene quindi eliminato e la sua posizione diventa un breakpoint aggiuntivo per l'arco concatenato.
Stato: ✔️ | Commit: 1474d85 - 10a81a5
Stato ✔️❔ | Commit: 1474d85 - 10a81a5
Stato: ✔️ | Commit: a5db64c - 1474d85 - 10a81a5
Stato: ✔️ | Commit: e2d5bf7
Problemi principali
Problemi risolti/minori/facili - Di quelli risolti non ho ancora fatto il push.
mount()
e unmount()
di cytoscape ma sono presenti solo nelle ultime versioni che hanno un bug con firefox che fa degradare le prestazioni man mano che usa il tool. cytoscape/cytoscape.js#2367mount()
e unmount()
.Mi pare che le due modalità di rendering siano invertite: se scelgo Label vengono fuori le IRI prefissate, e viceversa.
L'ontologia che sto usando è quella allegata alla issue #55
Inserendo un widget di prova ottengo l'errore: class constructors must be invoked with |new|.
Nel commit 0749f12 provo ad aggiungere due widget ma con entrambi i metodi ottengo lo stesso errore.
ui.js
import GrapholscapeWidget from './grapholscape_widget'
export default function createUi () {
const widget = document.createElement('grapholscape-widget')
this.container.appendChild(widget)
const widget2 = new GrapholscapeWidget()
this.container.appendChild(widget2)
}
Leggendo in questa issue lit/lit-element#54 la situazione mi sembra abbastanza confusionaria e potrebbe essere legato a babel, non ne sono del tutto sicuro comunque.
Come da oggetto, l'esportazione in SVG dei diagrammi con il layout Floaty ha dei problemi di rendering (non saprei da cosa possano dipendere).
Il risultato è una cosa del genere:
Segnalare all'utente che un file recente non esiste più ed eventualmente eliminarlo dalla lista.
Aggiungere per tutt'e tre i layout, la possibilità di filtrare via le Keys.
In caso di colori non definiti in un tema personalizzato, questi cambiano in base al tema selezionato prima di selezionare il tema custom. Dovrebbero invece essere impostati sulla base del tema light
.
Workaround: definire sempre tutti i colori definiti in wiki/Themes.
Non si è in grado di visualizzare la traduzione dell'esistenziale sul range di un attributo perchè per tradurre gli esistenziali Grapholscape usa ObjectSomeValuesFrom e non Object/DataPropertyDomain/Range.
Per tradurre il range di un attributo dovrebbe quindi esprimere in OWL l'inverso di un attributo, il che non è possibile.
In generale si dovrebbe quando possibile (anche splittando l'arco di equivalenza) usare gli assiomi ObjectPropertyDomain, ObjectPropertyRange, DataPropertyDomain, e DataPropertyRange,
It should be possible with the use of a toggle button to disable the visualization of the OWL translation widget.
Cambiare la scritta di default nel widget da "Search Predicates..." a "Search Entities..."
Il termine standard (o quantomeno quello più usato dagl istrumenti vicini alla comunità OWLese è Entity, non Predicate.
P.S. Per il momento assegno le issue di Grapholscape a Manuel (così almeno qualcuno le vede), ovviamente poi le smisteremo opportunamente.
Il rendering dentro il widget Entity details delle annotations se ce ne sono molte viene tabellato in modo errato.
Allego file di esempio con cui riprodurre l'errore
mezziopera.graphol.zip
.
Avendo diviso nettamente modello e renderer adesso i nuovi nodi creati dal renderer in lite-mode (gli attirbuti replicati) non ci sono nel modello iniziale e non possono essere cercati.
Sarebbe meglio avere i diagrammi nel widget in alto a sinistra in ordine alfabetico
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.