Coder Social home page Coder Social logo

obdasystems / sparqling Goto Github PK

View Code? Open in Web Editor NEW
2.0 5.0 0.0 10.87 MB

Point and click SPARQL query builder on Graphol ontologies

License: MIT License

JavaScript 5.28% TypeScript 92.96% Shell 0.34% HTML 0.77% CSS 0.67%
graphol-ontologies ontologies query query-builder sparql sparql-query sparql-query-builder

sparqling's People

Contributors

giacomoronconiobda avatar gianluca-pepe avatar valeriosantarelli avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

sparqling's Issues

Segnalazioni di ISTAT

Apro questa issue per riunire le varie segnalazioni di ISTAT.
Ovviamente non è detto che siano tutte corrette, magari alcune funzioni non sono implementate, oppure stanno facendo qualcosa di sbagliato loro.
Riporto direttamente il testo così come presentato da ISTAT.

  • volendo scrivere la query "estrazione dei residenti con età uguale a 10" non abbiamo trovato il tipo intero nella lista dei datatype (ce ne sono solo 3 al momento, decimale stringa e data se non ricordo male)
  • sul filtro definito su una data non sappiamo passare il formato...come si fa? o manca? per farti un esempio la query viene generata così e poi ci va in errore su Monolith
SELECT ?data_nascita0
WHERE
{ ?Essere_umano0
rdf:type rbi:Essere_umano ;
rbi:data_nascita ?data_nascita0
FILTER ( ?data_nascita0 < "01/01/2010" )
}
  • abbiamo aggiunto cittadinanza al grafo e abbiamo ottenuto la query seguente che su Monolith non ci fornisce perchè manca il mapping di codice_cittadinanza.
SELECT ?descrizione_classe_di_eta0 ?codice_sesso0 ?codice_cittadinanza0
WHERE
{ ?Essere_umano0
rdf:type rbi:Essere_umano ;
rdf:type rbi:Persona ;
rbi:appartiene_a_classe_di_eta ?Classe_di_eta0 .
?Classe_di_eta0
rdf:type rbi:Classe_di_eta ;
rbi:descrizione_classe_di_eta ?descrizione_classe_di_eta0 .
?Essere_umano0
rbi:codice_sesso ?codice_sesso0
FILTER ( ?codice_sesso0 = "M" )
?Essere_umano0
rdf:type rbi:Persona_maggiorenne ;
rbi:è_attualmente_cittadino ?Cittadinanza0 .
?Cittadinanza0
rdf:type rsbl:Cittadinanza ;
rsbl:codice_cittadinanza ?codice_cittadinanza0
}
  • In generale la delete sul query graph non ci sembra funzionare nel caso di concetti annidati (per esempio minorenne e persona) mentre funziona in altri casi.
  • come si fa a creare un come si fa a creare un query graph nuovo? abbiamo trovato solo il delete sui singoli concetti
  • abbiamo provato a scrivere una query su RelazioneParentale ma dopo averlo aggiunto al grafo e selezionato ci risulta possibile aggiungere al grafo tutti i ruoli tranne ha_tipo_relazione_parentale che appare clicabile ma poi non ci fa fare niente (non appare il popup di scelta con i vari "percorsi" nè viene aggiunto al grafo se lo cliccliamo). Questa è l'ontologia da usare per replicare l'errore: https://raw.githubusercontent.com/obdasystems/istat-raf/master/SIR/ontologia/ISTAT-SIR_v1.1.41.graphol?token=GHSAT0AAAAAABMKV5S4JED2Q26VHETHEHPOYTLXUHQ

Schermata 2022-04-26 alle 17 35 29

Nodi composti: `Can not create second element with ID`

Assegnare l'IRI come id univoco per le classi che vengono aggiunte come figlie di altre nel bgp non va bene perché potrebbero esserci più padri che hanno come figlia quella IRI.

?x rdf:type iri1.
?x rdf:type iri2.
=> iri1 e iri2 sono classi rappresentate come figli di ?x nel bgp

Visualizzazione dei dati errata a seguito di un join

Prendendo la speciica books3, se effettuo le seguenti operazioni:

  • selezione Book
  • selezione writtenBy, Author
  • selezione writtenBy, Book
  • join dei due nodi Book

Il query graph ha un nodo volante e lo SPARQL è diverso da quello che manda la chiamata di join.

image

Costruzione query incrementale tramite highlights

Idea di base

Rendere l'interazione con il widget suggestions quanto più grafica e interattiva possibile, senza aver bisogno di vedere e interagire con il grafo dell'ontologia.

Assunzioni di partenza

  • Deve essere un nuovo tipo di renderer integrato in Grapholscape
  • Se la query è vuota quando si sceglie il navigatore incrementale, si deve permettere la selezione della classe di partenza da cui procedere per mostrare i possibili passi successivi
  • Si deve quindi poter cambiare visualizzazione senza perdere la query costruita, come già avviene per Graphol-Lite e Floaty
  • Il widget suggestions rimane usabile e a supporto
  • Deve essere possibile un alto grado di interattività con cui poter:
    • visualizzare o nascondere gerarchie
    • espandere o collassare diverse occorrenze di una object property con diverse classi

Cose da sistemare per la versione integrata

  • Reset della query quando si invoca il "costruttore" più volte nella stessa sessione e la coppia nome/versione dell'ontologia è diversa da quella presente.
  • Tooltip sul pulsante run query
  • Chiamate degli optionals da aggiornare per accettare i parametri (basepath, headers etc..)
  • Stampare errori restituiti all'interno delle risposte del backend

Problema di modellazione API

Come gestiamo i ruoli ciclici (stessa classe per dominio e range)? Vuoi passare attraverso dominio o range?

In caso di ruoli di simmetrici non si pone il problema, dominio o range è uguale.

Click iniziale su una classe

Forziamo l'interazione della costruzione della query ad iniziare per forza da una Classe.
Quindi la rotta Highlights, invece di clickedIRI, sarà clickedClassIRI.

Ricordare il nodo Graphol da cui si è aggiunta una variabile nel BGP

Selezionando una elemento nel BGP, l'ontology graph deve mostrare il nodo Graphol che l'utente ha usato per creare quella variabile.
Il nodo potrebbe non esistere più se l'utente cambia visualizzazione (potrebbe essere stato semplificato), in tal caso usare come fallback il meccanismo attuale, cerca nel diagramma attuale o seleziona la prima istanza disponibile.

Export query graph as image

Sarebbe molto comodo, se non altro per scopi di costruzione di presentazioni, poter esportare il query graph in formato jpg, png, etc., o almeno poterlo ingrandire a tutto schermo.

Layout del query graph deve preservare la struttura ad albero rispetto alle inverseObjectProperties

L'eliminazione di una classe prevede l'eliminazione anche di tutti gli elementi "successivi" collegati da objectProperties (archi uscenti), mi chiedo però se andrebbero saltate le classi collegate da inverseObjectProperties (archi entranti).

Es:
su book se si seleziona Edition e poi hasEdition su book si ottiene: Book hasEdition Edition.
Eliminando Edition viene eliminato anche Book che però secondo me dovrebbe rimanere.
Nel caso di una query più lunga che si sviluppi tutta su book, si ottiene che eliminando edition viene eliminata tutta la query.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.